简述
还是和我之前分享的SpringBoot结合mybatis + tk.mapper(通用增删改查组件) + pageHelper(分页插件)一样,用springBoot我就不想用其他的配置文件,xml文件。
mybatisPlus2.x 版本不支持@Select或者@SelectProvider自定义sql结合分页插件使用,只支持xml文件的方式。所以本篇在mybatisPlus3.x基础上例子。
如果使用mybatisPlus2.x,推荐两篇写的不错的博客
https://blog.csdn.net/apicescn/article/details/79538938
https://blog.csdn.net/apicescn/article/details/79554597
如果要在2.x版本使用自定义sql分页,除了使用xml配置文件,也可以引入分页组件pageHelper
mybatisPlus和tk.mapper比较,网上很多比较文章,这里不多赘述
mybatisPlus比tk.mapper多了很多实用的功能确实不错,但是这个无xml的分页折磨我很久,总觉得分页和mybatisPlus太耦合。
开始配置
配置文件
pom文件
springBoot配置多说,mybatisPlus版本为3.1.1,3.x版本代码生成器多了分出一个jar包mybatis-plus-generator
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-boot.version>2.1.3.RELEASE</spring-boot.version>
<springfox-swagger.version>2.7.0</springfox-swagger.version>
<org.projectlombok.lombok>1.18.6</org.projectlombok.lombok>
<com.fasterxml.jackson>2.9.8</com.fasterxml.jackson>
<postgresql.driver.version>9.4.1211</postgresql.driver.version>
<boot.mybaits.version>1.2.0</boot.mybaits.version>
<mybatisplus.version>3.1.1</mybatisplus.version>
</properties>
<!-- db -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.driver.version}</version>
</dependency>
<!-- Mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-dts</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
yml文件
mybatis有驼峰转换在tk,mapper生效,但是用mybatisPlus必须配置它的驼峰转换。
此处猜测大部分配置用mybatisPlus的配置才能生效,因为各种配置是针对mybatisPlus
spring:
application:
name: report-service
swagger:
package: com.zhou.demo.mybatisplus.controller
profiles:
active: dev
datasource:
driverClassName: org.postgresql.Driver
url: *******************************
username: *******************************
password: *******************************
tomcat:
max-active: 300
server:
port: 8080
mybatis-plus:
type-aliases-package: com.zhou.demo.mybatisplus.dao.bean
configuration:
map-underscore-to-camel-case: true
代码实现
mybatisPlus的注解tableName和TableField condition是查询的方式like查询,可以说支持的很好了
3.x较2.x下面的实现类的路径做了一定漂移
@Data
@TableName("tb_person")
public class Person{
private String id;
@TableField(condition = SqlCondition.LIKE)
private String name;
private int age;
}
public interface PersonMapper extends BaseMapper<Person> {
@SelectProvider(type = PersonProvider.class, method = "findByPage")
//@Select("select * from tb_person where name = #{name} ")
IPage<Person> findPage(Page<Person> page, String name);
}
类似tk.mapper也是基础一个公共类mapper实现通用方法,不过比tk.mapper要更加全面
此处有一个自定义的方法findPage,用来测试自定义sql结合plus的分页插件,@select和@SelectProvider就不展开介绍了
@Service
public class PersonService extends ServiceImpl<PersonMapper, Person> {
public Person get(String id){
return getById(id);
}
public boolean saveEntity(Person person){
return save(person);
}
public IPage<Person> findByPage(String name){
Person person = new Person();
person.setName(name);
Wrapper<Person> wrapper = new QueryWrapper(person);
Page<Person> page = new Page<>();
IPage<Person> personIPage = baseMapper.selectPage(page, wrapper);
return personIPage;
}
public IPage<Person> testPage(String name){
Page<Person> page = new Page<>();
IPage<Person> personIPage = this.baseMapper.findPage(page, name);
return personIPage;
}
}
service层分别是保存,查询,分页方法,以上满足了用mybatisPlus全程去XML的使用方法
详细代码可以查看我git上的分享