在初學springboot的時候,只能一個人摸索,也踩了不少的大水坑。。。。網上的各種教程不適合自己用。下面自己寫一個整合教程,也把坑標記出來。
首先我們在創建項目的時候 ,儘量不要勾選像 WEB mybatis mysql 這些選項 。勾選上以後也只是自動添加依賴罷了,有時候會和你本地的環境不一致 而出現何種錯誤。我們可以創建項目以後自己添加pom依賴,去maven中央倉庫查詢pom.
有幾種創建方式 ,我這裏使用的是sts插件,在這裏下載
然後我們創建項目
儘量不要勾選 自己添加比較好根據自己的版本信息去找
第一個java類 就是springboot的啓動類,他是通過main方法來啓動的
application.propertis是他的配置文件,配置數據庫信息,以及mybaits掃描等等 他也可以寫成application.yml
這個文件中。格式很重要,如果你會Python的話應該懂得,類似,空格對齊之類的 不能出現tab空格,否則會出問題
下面我們對這個項目加上需要的pom依賴,依賴可以從下面這裏去查詢這是中央倉庫的地址
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>my-s-m-m-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my-s-m-m-1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然後我們新增controller包結構,新增UserController類
這裏我新增了一個方法 需要注意的是我箭頭指向的地方
首先 @RestController註解相當於@ResponseBody + @Controller合在一起的作用。
@RequestMapping 和springMVC一樣 說到底springboot 他只是將springMVC 和 spring整合在了一起,以前我們需要手動去給他配置各種xml讓他們相互依賴。springboot 將這些整合成了一個框架,不需要再那麼繁瑣的去配置。
好,這些的話自己查下資料,然後我們啓動這個項目訪問一下,
注意 啓動之前先將mybatis 的pom註釋掉否則會出現掃描不到文件的錯誤 導致啓動失敗,等我們將mybatis的代碼寫完,再將它放開
<!-- <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
-->
啓動沒有報錯,我們訪問這個路徑http://localhost:8080/userCon/testSpringboot
輸出成功,這樣 項目創建沒有問題 這時候 我們就將項目整個demo完成下來 最後的時候說一下要注意的點:
現在整個目錄結構是這樣的 然後我是使用mybatis的generator工具來進行生成我會把這個工具下載地址放在文章的最後,
generator.xml
在生成文件的時候,由於我用的是mysql8.0.15版本 需要注意的是 驅動地址 和鏈接屬性 都在5.*以後的版本改變了 這裏我把兩個都貼出來
新版本:
<!--數據庫鏈接地址賬號密碼-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/springboot?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8&autoReconnect=true" userId="root" password="root">
</jdbcConnection>
老版本:
<!--數據庫鏈接地址賬號密碼-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/springboot" userId="root" password="root">
</jdbcConnection>
這一段是非常重要的 記下來 要考的
?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8&autoReconnect=true
新版本必須加。。。。。。。很大的坑 找了很久
這是將生成的實體類 mapper的文件已經放到了項目中。仔細檢查一下你的mapper.xml文件是否生成有錯誤。最好將自動生成的方法刪掉 只留一個查詢,然後先把項目測通了再說。
我們再加上service業務層的接口和實現類
下面貼出來我實測有任何問題的配置文件(有問題你找我!!):
建表語句:
CREATE TABLE `user` (
`id` int(32) NOT NULL AUTO_INCREMENT,
`userName` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`passWord` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`realName` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
application.yml
spring:
profiles:
active:
datasource:
url: jdbc:mysql://localhost:3306/springboot?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
typeAliasesPackage: com.example.entity
mapperLocations: classpath*:mapping/*.xml
記住啊 對齊。不知道的可以直接複製過去 整個文件不爆紅 不爆黃纔算是格式對
下面我將每個層次的代碼都貼出來
UserController.java
package com.example.controller;
import java.util.Hashtable;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.service.UserService;
@RestController
@RequestMapping("/userCon")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/testSpringboot")
public Map<String, Object> testSpringboot(){
Map<String, Object> maps = new Hashtable<>();
maps.put("name", "測試輸出");
return maps;
}
@RequestMapping("getmmm")
@ResponseBody
public Map<String, Object> getmmm(){
Map<String, Object> mm = userService.getMaps();
return mm;
}
}
UserService.java
package com.example.service;
import java.util.Map;
public interface UserService {
Map<String, Object> getMaps();
}
UserService.impl.java
package com.example.service.impl;
import java.sql.SQLData;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.service.UserService;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Map<String, Object> getMaps() {
Integer i = 1;
Map<String, Object> j = new HashMap<String, Object>();
User selectByPrimaryKey = userMapper.selectByPrimaryKey(i);
j.put("service", selectByPrimaryKey);
return j;
}
}
UserMapper.java
package com.example.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.example.entity.User;
@Mapper
@Repository
public interface UserMapper {
User selectByPrimaryKey(Integer id);
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="userName" jdbcType="VARCHAR" property="username" />
<result column="passWord" jdbcType="VARCHAR" property="password" />
<result column="realName" jdbcType="VARCHAR" property="realname" />
</resultMap>
<sql id="Base_Column_List">
id, userName, passWord, realName
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from user
where id = #{id,jdbcType=INTEGER}
</select>
</mapper>
完整的代碼都在這。這個時候 測試代碼有了 配置數據庫 mybatis有了 啓動項目 。
訪問 http://localhost:8080/userCon/getmmm
返回沒問題。
這時候你就可以去做你的項目了 需要集成其他的技術 以後會更新 有什麼問題可以留言或者聯繫我
我附上項目demo 和 代碼生成器軟件
鏈接: https://pan.baidu.com/s/1-416_ZoEIpP0CsbvyfEpPQ 提取碼: frsk 複製這段內容後打開百度網盤手機App,操作更方便哦
不要錢 不要金幣 有問題隨時問我