這篇文章介紹一個SpringBoot整合Mybatis-Plus,提供一個小的Demo供大家參考。
已經很久沒有寫文章了,最近家裡有點事剛剛處理完,順便也趁機休息了一段時間。剛回到公司看了一下碼雲,發現本期碼雲封面人員就是Mybatis-Plus團隊苞米豆的負責人,如下圖。
忽然想到,正好之前別人跟我說過怎麼不出一個SpringBoot整合Mybatis-Plus的,已經很久的事了,正好想起來,這次就弄一個整合的Demo。
言歸正傳,新建一個專案。pom檔案中加入Mybatis依賴,完整pom如下:
<?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>
<groupId>com.dalaoyang</groupId>
<artifactId>springboot_mybatisplus</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot_mybatisplus</name>
<description>springboot_mybatisplus</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
複製程式碼
配置檔案配置資料庫配置和對應Mybatis-Plus實體資訊,配置如下:
##埠號
server.port=8888
##資料庫url
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false
##資料庫使用者名稱
spring.datasource.username=root
##資料庫密碼
spring.datasource.password=root
##資料庫驅動
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
##日誌級別
logging.level.com.dalaoyang.dao.UserMapper=debug
##mybatis-plus mapper xml 檔案地址
mybatis-plus.mapper-locations=classpath*:mapper/*Mapper.xml
##mybatis-plus type-aliases 檔案地址
mybatis-plus.type-aliases-package=com.dalaoyang.entity
複製程式碼
實體類User程式碼如下:
package com.dalaoyang.entity;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.entity
* @email yangyang@dalaoyang.cn
* @date 2018/7/20
*/
public class User {
private int id;
private String user_name;
private String user_password;
public User() {
}
public User(String user_name, String user_password) {
this.user_name = user_name;
this.user_password = user_password;
}
public User(int id, String user_name, String user_password) {
this.id = id;
this.user_name = user_name;
this.user_password = user_password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password;
}
}
複製程式碼
下面要說的都是需要注意的地方,新增一個MybatisPlus配置類,其中沒有做過多的設定,只是設定了一下方言,程式碼如下:
package com.dalaoyang.config;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.config
* @email yangyang@dalaoyang.cn
* @date 2018/7/20
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor(){
PaginationInterceptor page = new PaginationInterceptor();
//設定方言型別
page.setDialectType("mysql");
return page;
}
}
複製程式碼
UserMapper繼承了MybatisPlus的BaseMapper,這裡面列舉一個普通的查詢方法getUserList,完整程式碼如下:
package com.dalaoyang.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.dalaoyang.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.dao
* @email yangyang@dalaoyang.cn
* @date 2018/7/20
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
List<User> getUserList();
}
複製程式碼
新建一個UserMapper.xml,裡面寫getUserList對應sql,程式碼如下:
<?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.dalaoyang.dao.UserMapper">
<resultMap id="user" type="com.dalaoyang.entity.User"/>
<parameterMap id="user" type="com.dalaoyang.entity.User"/>
<select id="getUserList" resultMap="user">
SELECT * FROM USER
</select>
</mapper>
複製程式碼
最後和往常一樣,新建一個Controller進行測試,完整程式碼如下:
package com.dalaoyang.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.dalaoyang.dao.UserMapper;
import com.dalaoyang.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.controller
* @email yangyang@dalaoyang.cn
* @date 2018/7/20
*/
@RestController
public class UserController {
@Autowired
private UserMapper userDao;
//http://localhost:8888/getUserList
@GetMapping("getUserList")
public List<User> getUserList(){
return userDao.getUserList();
}
//http://localhost:8888/getUserListByName?userName=xiaoli
//條件查詢
@GetMapping("getUserListByName")
public List<User> getUserListByName(String userName)
{
Map map = new HashMap();
map.put("user_name", userName);
return userDao.selectByMap(map);
}
//http://localhost:8888/saveUser?userName=xiaoli&userPassword=111
//儲存使用者
@GetMapping("saveUser")
public String saveUser(String userName,String userPassword)
{
User user = new User(userName,userPassword);
Integer index = userDao.insert(user);
if(index>0){
return "新增使用者成功。";
}else{
return "新增使用者失敗。";
}
}
//http://localhost:8888/updateUser?id=5&userName=xiaoli&userPassword=111
//修改使用者
@GetMapping("updateUser")
public String updateUser(Integer id,String userName,String userPassword)
{
User user = new User(id,userName,userPassword);
Integer index = userDao.updateById(user);
if(index>0){
return "修改使用者成功,影響行數"+index+"行。";
}else{
return "修改使用者失敗,影響行數"+index+"行。";
}
}
//http://localhost:8888/getUserById?userId=1
//根據Id查詢User
@GetMapping("getUserById")
public User getUserById(Integer userId)
{
return userDao.selectById(userId);
}
//http://localhost:8888/getUserListByPage?pageNumber=1&pageSize=2
//條件分頁查詢
@GetMapping("getUserListByPage")
public List<User> getUserListByPage(Integer pageNumber,Integer pageSize)
{
Page<User> page =new Page<>(pageNumber,pageSize);
EntityWrapper<User> entityWrapper = new EntityWrapper<>();
entityWrapper.eq("user_name", "xiaoli");
return userDao.selectPage(page,entityWrapper);
}
}
複製程式碼
這裡對上面程式碼稍作解釋,其中包含了如下幾個方法:
1.getUserList :這是普通的Mybatis查詢的方法,沒有用到Mybatis-Plus,這裡不做過多解釋。
2.getUserListByName:條件查詢,根據名稱查詢使用者列表,這裡使用到了selectByMap方法,引數需要傳一個Map,裡面對應寫好需要查詢的欄位名與對應查詢值。
3.saveUser :儲存使用者,這裡使用的是insert方法,需要傳一個實體物件,返回Integer值作為影響行數。
4.updateUser :修改使用者,這裡使用的是updateByIdt方法,需要傳一個實體物件,返回Integer值作為影響行數。
5.getUserById :根據Id查詢實體物件,需要傳使用者Id。
6.getUserListByPage :條件分頁查詢,使用的是selectPage方法,方法需要一個分頁物件Page和一個條件物件EntityWrapper。Page放入頁碼和每頁數量,EntityWrapper使用eq方法放入對應欄位名和對應查詢值。
這裡只是舉例說明幾個方法,其中方法還有很多,更多Mybatis-Plus使用請檢視官方文件:baomidou.oschina.io/mybatis-plu…
原始碼下載 :大老楊碼雲
個人網站:www.dalaoyang.cn