说明: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");