1.快速入门
可单独创建一个项目装Mybatis-Plus
1.导入依赖
<dependencies>
<!--mybatisplus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!--数据库连接依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
2.配置文件【mybatiesplus-config.properties】
#代码输出基本路径
OutputDir=D:/software/IDEA_projects/bamboowisdom-bwcc/bwcc-service/bwcc-service-system/src/main/java
#mapper.xml SQL映射文件目录
OutputDirXml=D:/software/IDEA_projects/bamboowisdom-bwcc/bwcc-service/bwcc-service-system/src/main/resources
#domain的输出路径,我们放在公共模块下
OutputDirBase=D:/software/IDEA_projects/bamboowisdom-bwcc/bwcc-pojo/bwcc-pojo-system/src/main/java
#设置作者
author=ericzhang
#自定义包路径:基础包的路径
parent=cn.ericzhang.bwcc
#数据库连接信息
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///bwcc-system?serverTimezone=UTC
jdbc.user=root
jdbc.pwd=19980318
3.代码生成主类
package cn.ericzhang.bwcc;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.*;
/**
* 生成代码的主类
*/
public class GenteratorCode {
public static void main(String[] args) throws InterruptedException {
//用来获取Mybatis-Plus.properties文件的配置信息
ResourceBundle rb = ResourceBundle.getBundle("mybatiesplus-config"); //不要加后缀
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(rb.getString("OutputDir"));
gc.setFileOverride(false);
gc.setActiveRecord(true);// 开启 activeRecord 模式
gc.setEnableCache(false);// XML 二级缓存
gc.setBaseResultMap(true);// XML ResultMap
gc.setBaseColumnList(false);// XML columList
gc.setAuthor(rb.getString("author"));
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setTypeConvert(new MySqlTypeConvert());
dsc.setDriverName(rb.getString("jdbc.driver"));
dsc.setUsername(rb.getString("jdbc.user"));
dsc.setPassword(rb.getString("jdbc.pwd"));
dsc.setUrl(rb.getString("jdbc.url"));
mpg.setDataSource(dsc);
// 表策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setTablePrefix(new String[]{"t_"});// 此处可以修改为您的表前缀
strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
strategy.setInclude(new String[]{
"t_config",
"t_department",
"t_employee",
"t_operation_log",
"t_systemdictionary",
"t_systemdictionaryitem"
}); // 需要生成的表
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent(rb.getString("parent")); //cn.ericzhang.bwcc
pc.setController("web.controller"); //cn.ericzhang.bwcc.web.controller
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setEntity("domain");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-rb");
this.setMap(map);
}
};
List<FileOutConfig> focList = new ArrayList<FileOutConfig>();
//controller的输出配置
focList.add(new FileOutConfig("/templates/controller.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
//合并好的内容输出到哪儿?
return rb.getString("OutputDir") + "/cn/ericzhang/bwcc/web/controller/" + tableInfo.getEntityName() + "Controller.java";
}
});
//query的输出配置
focList.add(new FileOutConfig("/templates/query.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return rb.getString("OutputDirBase") + "/cn/ericzhang/bwcc/query/" + tableInfo.getEntityName() + "Query.java";
}
});
// 调整 domain 生成目录演示
focList.add(new FileOutConfig("/templates/entity.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return rb.getString("OutputDirBase") + "/cn/ericzhang/bwcc/domain/" + tableInfo.getEntityName() + ".java";
}
});
// 调整 xml 生成目录演示
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return rb.getString("OutputDirXml") + "/cn/ericzhang/bwcc/mapper/" + tableInfo.getEntityName() + "Mapper.xml";
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改,
// 放置自己项目的 src/main/resources/templates 目录下, 默认名称可以不配置,也可以自定义模板名称
TemplateConfig tc = new TemplateConfig();
tc.setService("/templates/service.java.vm");
tc.setServiceImpl("/templates/serviceImpl.java.vm");
tc.setMapper("/templates/mapper.java.vm");
tc.setEntity(null);
tc.setController(null);
tc.setXml(null);
// 如上任何一个模块如果设置 空 OR Null 将不生成该模块。
mpg.setTemplate(tc);
// 执行生成
mpg.execute();
}
}
4.拷贝模板并修改
5.执行代码生成器主类,生成代码
2.后续配置
1.基础工具准备
这些工具类放到整个项目的公共代码中【bamboowisdom-basic-common】
-
BaseQuery
-
JsonResult
-
PageList
2.pojo引入依赖【xxx-pojo-xxx模块】
对应生成的pojo类需要引入依赖
- mybatis-plus-boot-starter
- bamboowisdom-basic-common
<!--mybatisplus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!--项目公共依赖-->
<dependency>
<groupId>cn.ericzhang</groupId>
<artifactId>bamboowisdom-basic-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
3.service引入依赖【xxx-service-xxx服务】
引入pojo类就相当于引入了Mybatis-Plus依赖和common依赖
<!--pojo-system服务依赖-->
<dependency>
<groupId>cn.ericzhang</groupId>
<artifactId>bwcc-pojo-system</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
4.service添加Mybatis-Plus配置类【分页功能需要】
注意确认扫描路径,此处扫描mapper接口,不需要在启动类加了
package cn.ericzhang.bwcc.config;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
// mapper接口扫描
@MapperScan("cn.ericzhang.bwcc.mapper")
// 开启事务管理,让我们在service中可以使用事务注解,springboot项目默认开启
@EnableTransactionManagement
public class MybatisPlusConfig {
/**
* 分页插件配置对象,Mybatis-plus需要此配置对象
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
5.配置文件添加四大金刚和指定mapper.xml位置
server:
port: 10020
spring:
application:
name: service-system #服务名
cloud: #注册到Nacos
nacos:
discovery:
server-addr: 127.0.0.1:8848
datasource:
data-username: root
data-password: root
url: jdbc:mysql:///bwcc-system?serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource # 德鲁伊连接池
mybatis-plus:
mapper-locations: classpath:cn/ericzhang/bwcc/mapper/*Mapper.xml # 指定mapper.xml位置
#type-aliases-package: cn.ericzhang.bwcc.domain,cn.ericzhang.bwcc.query # 配置别名,本项目需要别名的地方少,不配