文章包括以下三个模块
A.配置Mybatis Plus
B.配置代码生成器
C.配置双数据源
A.配置Mybatis Plus
1.引入Mybatis_Plus的Maven依赖
<!--Mybati_plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<!--springboot web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql依赖,连接Mysql数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--引入lombok简化代码-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
2.配置数据源,作者使用的是application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://IP:3306/数据库名?useSSL=false&serverTimezone=GMT%2B8
username: 帐号
password: 密码
3.数据库中创建表及插入数据
CREATE TABLE `students` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`grade` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `students` VALUES ('1', '张三', '18', '高三');
INSERT INTO `students` VALUES ('2', '李四', '17', '高二');
4.创建实体
import lombok.Data;
@Data
public class Student {
private Long id;
private String name;
private int age;
private String grade;
}
5.创建Mapper接口
继承BaseMapper这个类,可以直接使用它自带的简单CRUD操作,并且包括分布操作
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.Student;
public interface StudentMapper extends BaseMapper<Student> {
}
6.创建Controller测试
import com.example.demo.entity.Students;
import com.example.demo.mapper.StudentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class TestController {
@Autowired
StudentMapper studentMapper;
/**
* @Author xiaolinhui
* @Description //TODO 测试查询方法 selectById
* @Description //TODO 直接通过对应实体的Mapper接口进行操作
* @Date 10:16 2019/12/7
* @Param
* @return
**/
@RequestMapping("/testselect")
public String testSelect(){
Students student = studentMapper.selectById(1);
return student.toString();
}
}
7.启动
要记得扫描Mapper包哦!!!!!!!
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
8.验证接口,成功!!!!
B.配置代码生成器
1.引入生成器的依赖及模版引擎
<!--Mybati_plus代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.0</version>
</dependency>
<!-- 模板引擎velocity start-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
2.引入配置类,修改数据源,默认是生成数据库中的所有表的实体,可根据注释进行修改,修改生成代码的路径
package com.example.demo.Utils;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* Created by badado on 2019/4/25.
*/
public class Generatortest {
public static void main(String[] args) {
generateTest();
}
public static void generateTest(){
//全局配置
GlobalConfig config = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
//设置是否支持AR模式
config.setActiveRecord(true)
//设置生成代码的作者
.setAuthor("xiaolinhui")
//设置输出代码的位置
.setOutputDir(projectPath + "/src/main/java/gene")
//.setEnableCache(false)// XML 二级缓存
//.setBaseResultMap(true)// XML ResultMap
//.setBaseColumnList(true)// XML columList
//.setKotlin(true) 是否生成 kotlin 代码
//设置是否覆盖原来的代码
.setFileOverride(true);
//******************************数据源配置***************************************
//数据库连接url
String dbUrl = "jdbc:mysql://ip:3306/gpshisdata?useSSL=false&serverTimezone=GMT%2B8";
//数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
//数据库类型 枚举
dataSourceConfig.setDbType(DbType.MYSQL)
//设置url
.setUrl(dbUrl)
//设置用户名
.setUsername("root")
//设置密码
.setPassword("root")
//设置数据库驱动
.setDriverName("com.mysql.cj.jdbc.Driver")
// 自定义数据库表字段类型转换【可选】
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
System.out.println("转换类型:" + fieldType);
//tinyint转换成Boolean
if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
return DbColumnType.BOOLEAN;
}
//将数据库中datetime转换成date
if ( fieldType.toLowerCase().contains( "datetime" ) ) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
//******************************策略配置******************************************************
// 自定义需要填充的字段 数据库中的字段
// List<TableFill> tableFillList = new ArrayList<>();
// tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));
// tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE));
// tableFillList.add(new TableFill("creator_id", FieldFill.INSERT));
// tableFillList.add(new TableFill("gmt_creat", FieldFill.INSERT));
// tableFillList.add(new TableFill("available_flag", FieldFill.INSERT));
// tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT));
// tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT));
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
//全局大写命名是否开启
.setCapitalMode(true)
//【实体】是否为lombok模型
.setEntityLombokModel(true)
//表名生成策略 下划线转驼峰
.setNaming(NamingStrategy.underline_to_camel);
//自动填充设置
// .setTableFillList(tableFillList)
//修改替换成你需要的表名,多个表名传数组,以英文逗号分割
// .setInclude("tb01_sim","tb01_terminal","tb01_vehicle");
//集成注入设置
//注入全局设置
new AutoGenerator().setGlobalConfig(config)
//注入数据源配置
.setDataSource(dataSourceConfig)
//注入策略配置
.setStrategy(strategyConfig)
//设置包名信息
.setPackageInfo(
new PackageConfig()
//提取公共父级包名
.setParent("com.cesiumai.gps")
//设置controller信息
.setController("controller")
//设置实体类信息
.setEntity("entity")
)
//设置自定义模板
.setTemplate(
new TemplateConfig()
//.setXml(null)//指定自定义模板路径, 位置:/resources/templates/entity2.java.ftl(或者是.vm)
//注意不要带上.ftl(或者是.vm), 会根据使用的模板引擎自动识别
// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
// .setController("...");
// .setEntity("...");
// .setMapper("...");
// .setXml("...");
// .setService("...");
.setServiceImpl("templates/serviceImpl.java")
)
//开始执行代码生成
.execute();
}
}
3.生成代码,成功!!!!!

C.配置双数据源
1.maven引入动态数据源
<!--双数据源配置依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.3</version>
</dependency>
修改application.yml文件,根据具体情况使用哪两种数据源,以下为连接两个Mysql数据库,可自行修改组合.
primary: master 指定这个数据源为主数据源 slave为从数据源,要使用的时候通过加注解@DS("slave")在方法上进行切换
spring:
datasource:
dynamic:
primary: master
datasource:
master:
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://ip:3306/数据库名?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false
druid:
initial-size: 3
max-active: 8
min-idle: 2
max-wait: -1
min-evictable-idle-time-millis: 30000
max-evictable-idle-time-millis: 30000
time-between-eviction-runs-millis: 0
validation-query: select 1
validation-query-timeout: -1
test-on-borrow: false
test-on-return: false
test-while-idle: true
pool-prepared-statements: true
max-open-prepared-statements: 100
filters: stat,wall
share-prepared-statements: true
slave:
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://ip:3306/数据库名?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false
druid:
initial-size: 3
max-active: 8
min-idle: 2
max-wait: -1
min-evictable-idle-time-millis: 30000
max-evictable-idle-time-millis: 30000
time-between-eviction-runs-millis: 0
validation-query: select 1
validation-query-timeout: -1
test-on-borrow: false
test-on-return: false
test-while-idle: true
pool-prepared-statements: true
max-open-prepared-statements: 100
filters: stat,wall
share-prepared-statements: true
3.启动,出现以下日志,配置成功
4.在具体方法上切换数据源
5.启动时默认是有primary: master数据源,测试slave接口是否成功
6.成功!!!!!
如果帮助到了大家,希望能转1毛钱鼓励一下,哈哈!!