mybatis-plus + generator代码生成器 和 spring boot集成
前言
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
它已经封装好了一些crud方法,对于非常常见的一些sql我们不用写xml了,直接调用这些方法就行,但它也是支持我们自己手动写xml。 这里我提前建好了springboot项目!
一、Mybatis-Plus是什么?
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
二、使用步骤
1.引入依赖
代码如下(示例):
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
2.引入插件
代码如下(示例):
下面展示一些 内联代码片
。
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<!--这里跟上面的版本要一致-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
</dependencies>
</plugin>
3.配置yml
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/exam?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
username: root
password: 123
servlet:
multipart:
enabled: true
max-file-size: 20MB
max-request-size: 20MB
server:
port: 8080
supportMethodsArguments: true
params: count=countSql
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
4.配置生成代码的路径(generatorConfig.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!--覆盖生成XML文件-->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<!-- 生成的实体类添加toString()方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<!-- 不生成注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/exam?useSSL=false&serverTimezone=UTC"
userId="root"
password="123">
</jdbcConnection>
<!-- domain类的位置 -->
<javaModelGenerator targetProject="src\main\java"
targetPackage="com.bgs.demo_springboot.domain"/>
<!-- mapper xml的位置 -->
<sqlMapGenerator targetProject="src\main\resources"
targetPackage="Mapper"/>
<!-- mapper类的位置 -->
<javaClientGenerator targetProject="src\main\java"
targetPackage="com.bgs.demo_springboot.mapper"
type="XMLMAPPER" />
<!--都是表名
将要生成的表名和实体类写到这里
-->
<table tableName="student" domainObjectName="Student"/>
</context>
<!--
添加Maven命令
mybatis-generator:generate -e
-->
</generatorConfiguration>
5.最后点击插件生成
最后就生成了四个文件,分别是实体类,example(mybatis-generator会为每个字段产生Criterion,为底层的mapper.xml创建动态sql。如果表的字段比较多,产生的example类会十分庞大。理论上通过example类可以构造你想到的任何筛选条件。在mybatis-generator中加以配置,配置数据表的生成操作就可以自动生成example了),mapper,mapper.xml
三、具体代码实现
1.前端
//全查分页,tips($ajax 为 $axios 这里用的是post请求)
findAll(page){
let _this=this
this.$ajax.post("http://127.0.0.1:8081/findAll",{
page:page,
size:_this.$refs.pagination.size,
}).then(res => {
//全查
this.tableData = res.data.content.list
_this.$refs.pagination.render(page, res.data.content.total);
})
},
//编辑
saveStu(addAll){
let _this = this;
_this.$ajax.post("http://127.0.0.1:8081/addStu",addAll).then((response)=>{
let resp = response.data;
if(resp.success){
_this.dialogFormUpdateVisible=false
_this.findAll(1);
}else{
_this.dialogFormUpdateVisible=false
}
})
},
//删除
delStu(stuId){
this.$ajax.get('http://127.0.0.1:8081/delStu',{
params:{stuId:stuId}
}).then(res => {
//全查
this.findAll(1)
})
}
2.后端service
@Resource
private StudentMapper studentMapper;
//分页全查
public void findAll(PageDto pageDto) {
StudentExample studentExample=new StudentExample();
PageHelper.startPage(pageDto.getPage(),pageDto.getSize());
List<Student> students = studentMapper.selectByExample(studentExample);
PageInfo<Student> pageInfo=new PageInfo<>(students);
pageInfo.setTotal(pageInfo.getTotal());
List<StudentDto> list= CopyUtil.copyList(students,StudentDto.class);
pageDto.setList(list);
}
//添加
public void addStu(Student student) {
studentMapper.insert(student);
}
//修改
public void updateStu(Student student) {
studentMapper.updateByPrimaryKey(student);
}
//删除
public void delStu(Integer stuId) {
studentMapper.deleteByPrimaryKey(stuId);
}
//模糊查(这里用到了example 因为生成的代码只能做到基础的全查,根据条件查,而这里就需要运用example 来对sql进行拼接,用到了createCriteria(),里面有很多方法,根据需求进行拼接即可!!)
public void findAllLikeName(String stuName) {
StudentExample studentExample=new StudentExample();
studentExample.createCriteria().andStuNameLike("%"+stuName+"%");
studentMapper.selectByExample(studentExample);
System.out.println(studentMapper.selectByExample(studentExample));
}
总结
1.引入依赖
2.引入插件
3.配置yml
4.配置生成代码的路径(generatorConfig.xml)
5.最后点击插件生成
6.代码的具体实现