1.環境
springBoot版本 2.0.1
2.引入依賴
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
3.配置屬性
配置連接數據庫、數據庫連接池、以及mybatis整合
server:
port: 8080
spring:
datasource:
name: mysql_test
type: com.alibaba.druid.pool.DruidDataSource
#druid相關配置
druid:
#監控統計攔截的filters
filters: stat
driver-class-name: com.mysql.jdbc.Driver
#基本屬性
url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
username: root
password: 123456
#配置初始化大小/最小/最大
initial-size: 5
min-idle: 5
max-active: 30
#獲取連接等待超時時間
max-wait: 70000
#間隔多久進行一次檢測,檢測需要關閉的空閒連接
time-between-eviction-runs-millis: 60000
#一個連接在池中最小生存的時間
min-evictable-idle-time-millis: 300000
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打開PSCache,並指定每個連接上PSCache的大小。oracle設爲true,mysql設爲false。分庫分表較多推薦設置爲false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.winterchen.model
經過以上步驟,Spring Boot整合mybatis已經完成,下面開始測試
4.創建sql的語句
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`userId` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`userId`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1000 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
5.實體類
public class UserDomain {
private Integer userId;
private String userName;
private String password;
private String phone;
getter/setter ......
}
6.Mapper接口和映射文件
public interface UserDao {
int insert(UserDomain record);
List<UserDomain> selectUsers();
}
<sql id="BASE_TABLE">
t_user
</sql>
<sql id="BASE_COLUMN">
userId,userName,password,phone
</sql>
<insert id="insert" parameterType="com.winterchen.model.UserDomain">
INSERT INTO
<include refid="BASE_TABLE"/>
<trim prefix="(" suffix=")" suffixOverrides=",">
userName,password,
<if test="phone != null">
phone,
</if>
</trim>
<trim prefix="VALUES(" suffix=")" suffixOverrides=",">
#{userName, jdbcType=VARCHAR},#{password, jdbcType=VARCHAR},
<if test="phone != null">
#{phone, jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="selectUsers" resultType="com.winterchen.model.UserDomain">
SELECT
<include refid="BASE_COLUMN"/>
FROM
<include refid="BASE_TABLE"/>
</select>
7.Service實現
public interface UserService {
int addUser(UserDomain user);
PageInfo<UserDomain> findAllUser(int pageNum, int pageSize);
}
@Service(value = "userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public int addUser(UserDomain user) {
return userDao.insert(user);
}
@Override
public List<UserDomain> findAllUser() {
List<UserDomain> userDomains = userDao.selectUsers();
return userDomains;
}
}
Service實現類不要玩了加@Service註解,不然Spring容器掃描不到,會報錯。
8.Controller
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@ResponseBody
@PostMapping("/add")
public int addUser(UserDomain user){
return userService.addUser(user);
}
@ResponseBody
@GetMapping("/all")
public Object findAllUser(
@RequestParam(name = "pageNum", required = false, defaultValue = "1")
int pageNum,
@RequestParam(name = "pageSize", required = false, defaultValue = "10")
int pageSize){
return userService.findAllUser(pageNum,pageSize);
}
}
通過postman測試通過。
如果在瀏覽器測試的話,@Controller需要改爲@RestController,否則會報錯,因爲沒有整合模板。
@PostMapping也需要改爲@GetMapping,瀏覽器不支持直接post請求。
說明:
整合之後,如果啓動報如下錯誤:
Caused by: java.lang.ClassNotFoundException: org.apache.ibatis.session.SqlSessionFactory
說明mybatis包沒有引入
默認mybatis-spring-boot-starter包應該會導入,但是不知道爲什麼實驗時候沒有導入,所以導致會報上面的錯誤。
只需要自己手動導入mybatis包即可
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>