說明:MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,爲簡化開發、提高效率而生。
以前項目中經常使用的是mybatis,現在項目中接觸到mybatis-plus,個人覺得挺不錯的,只需簡單配置,即可使用。內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求,xml也可以大大的簡化了
下面來一步步集成
1.引入pom文件(注意:引入 MyBatis-Plus
之後請不要再次引入 MyBatis
以及 MyBatis-Spring
,以避免因版本差異導致的問題。)
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.6</version>
</dependency>
<!--mybatis-plus的代碼生成器-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--<scope>runtime</scope>-->
</dependency>
<!-- 使用數據源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
2.配置yml和配置bean(數據源和mapper、實體的配置)
spring:
datasource:
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/your_database?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
mybatis-plus:
# 如果是放在src/main/java目錄下 classpath:/com/yourpackage/*/mapper/*Mapper.xml
# 如果是放在resource目錄 classpath:/mapper/*Mapper.xml
mapper-locations: classpath:/mapper/*Mapper.xml
#實體掃描,多個package用逗號或者分號分隔
typeAliasesPackage: com.example.select2
@Configuration
@MapperScan("com.example.select2.mapper")
public class MybatisPlusConfig {
/*
* 分頁插件,自動識別數據庫類型
* 多租戶,請參考官網【插件擴展】
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Bean(name="dataSource")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource(){
return new DruidDataSource();
}
}
3.代碼自動生成器(https://mp.baomidou.com/guide/generator.html)
這個東西可以在官網直接copy過來,用main方法運行就好了,改一下你自己的數據源,文件輸出位置,項目結構,還有表名這樣
4.項目結構(controller,service,mapper,entity都是自動生成的)
service和mapper分別實現了IService和BaseMapper接口,所以裏面已經內置很多curl的方法
5.使用
到這一步就已經完成了springboot+mybatis-plus的集成,下面就來看看如何使用
@Autowired
private SysProvinceMapper sysProvinceMapper;
@RequestMapping("testMybatisPlus")
public void testMybatisPlus(){
//條件查詢
Wrapper<SysProvince> wrapper=new QueryWrapper<>();
((QueryWrapper<SysProvince>) wrapper).eq("del_flag","0");
System.out.println("查詢:"+sysProvinceMapper.selectList(wrapper));
//添加
SysProvince province = new SysProvince();
province.setProvinceName("外星省");
province.setProvinceSort(1L);
province.setCreateTime(LocalDateTime.now());
province.setModifyTime(LocalDateTime.now());
province.setDelFlag("0");
sysProvinceMapper.insert(province);
//更新
SysProvince sysProvince = sysProvinceMapper.selectById(48);
sysProvince.setDelFlag("1");
sysProvinceMapper.updateById(sysProvince);
//刪除
sysProvinceMapper.deleteById(48);
}
6.分頁插件和自定義maper.xml
上面已經配置了分頁插件了
a.在mapper定義一個接口
IPage<SysProvince> selectPage(Page page, @Param("delFlag") String delFlag);
b.新建一個mapper.xml在resource下的mapper文件夾下
<?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.select2.mapper.SysProvinceMapper">
<!-- 根據區縣ID查詢所屬的城市和省份名稱 -->
<select id="selectPage" parameterType="java.lang.String" resultType="com.example.select2.entity.SysProvince">
select * from kzj_sys_province WHERE del_flag=#{delFlag}
</select>
</mapper>
c.使用
Page<SysProvince> p = new Page<>(1, 10);
IPage<SysProvince> sysProvinceIPage = sysProvinceMapper.selectPage(p, "0");