文章目录
springboot集成mybatis-plus
概念
为简化开发而生
在mybatis的基础上只做增强
一、添加依赖
mybatis-plus依赖
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>starter-latest-version</version>
</dependency>
添加mysql-connector 和datasource 依赖
<!--mysql connector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--data source-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.25</version>
</dependency>
二、配置数据库信息
- 在 application.yml 添加数据库配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# mysql-connector-java 6 以前使用com.mysql.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
username: test
password: test
三、配置mapper接口扫描
- 在启动类上添加 @MapperScan
四、编写相应代码开始开发
数据库对应bean
- 数据库表test
CREATE TABLE `test` (
`id` int(6) NOT NULL DEFAULT '0',
`name` varchar(50) DEFAULT NULL,
`age` int(6) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
- 实体类
import lombok.Data;
/**
* @author liouwb
*/
@Data
public class Test {
private int id;
private String name;
private Integer age;
}
编写dao层mapper接口
package com.liouxb.web.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liouxb.web.demo.domain.Test;
/**
* @author liouwb
*/
public interface TestMapper extends BaseMapper<Test> {
}
五、测试验证代码
mybatis-plus generator
(1)、添加依赖
- MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要添加相关依赖
<!--mybatis-plus-generator-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<!--模板依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
(2)、添加generator配置
-
在Application.java(启动类)同目录下,添加generator类
-
generator类代码配置
package com.liouxb.web.demo;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
import java.util.List;
/**
* mybatis plus逆向工程
*
* @author liouwb
*/
public class GenerationUtil {
public static void main(String[] args) {
// 对应数据库名
String[] tabList = new String[]{"test"};
String author = "liouwb";
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setFileOverride(true);
// 不需要ActiveRecord特性的请改为false
gc.setActiveRecord(true);
// XML 二级缓存
gc.setEnableCache(false);
// XML ResultMap
gc.setBaseResultMap(true);
// XML columList
gc.setBaseColumnList(true);
gc.setAuthor(author);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("test");
dsc.setPassword("test");
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false");
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 表名生成策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 需要生成的表
strategy.setInclude(tabList);
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.liouxb.web");
pc.setController("controller");
pc.setEntity("domain");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setMapper("mapper");
pc.setXml("mapperXml");
mpg.setPackageInfo(pc);
// mapper xml文件配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
}
};
// 关闭默认 xml 生成,调整生成 至 根目录
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/resources/mapper/" + tableInfo.getMapperName() + ".xml";
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
mpg.setTemplate(new TemplateConfig().setXml(null));
// 执行生成
mpg.execute();
}
}
(3)、反向生成代码
- 运行generator自动生成代码
- 自动生成代码效果
mybatis-plus分页
- 添加配置
package com.liouxb.web.demo.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author liouwb
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor(){
PaginationInterceptor page = new PaginationInterceptor();
//设置方言类型
page.setDialectType("mysql");
return page;
}
}
- mapper接口
package com.liouxb.web.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.liouxb.web.demo.domain.Test;
/**
* @author liouwb
*/
public interface TestMapper extends BaseMapper<Test> {
IPage<Test> selectTests(Page<?> page);
}
- mapper.xml文件
<select id="selectTests" resultType="com.liouxb.web.demo.domain.Test">
SELECT id,name FROM test
</select>
- 分页效果
idea mybatisx插件
- 安装mybatisx插件
- 连接数据源之后 xml 里自动提示字段
- Java 与 XML 调回跳转
- Mapper 方法自动生成 XML