Mybatis Plus
添加依赖:
<!--使用mybatisplus代码生成器 自己加spring boot依赖工具包哦--> <dependency> <artifactId>velocity</artifactId> <exclusions> <exclusion> <artifactId>commons-collections</artifactId> <groupId>commons-collections</groupId> </exclusion> </exclusions> <groupId>org.apache.velocity</groupId> <version>1.7</version> </dependency> <!--导入mybatis plus依赖包--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>2.1.9</version> </dependency>
自定义生成模板引擎:
package com.aaa.util;
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.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.Collections;
/**
* @Author: cws
* @Date: 2020/7/9 0009 15:10
* @Version 1.0
* 使用mybatisplus自动生成代码
*/
public class MyGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
//输出目录
globalConfig.setOutputDir("D://生成代码//");
// 是否覆盖文件
globalConfig.setFileOverride(true);
// 开启 activeRecord 模式
globalConfig.setActiveRecord(true);
// XML 二级缓存
globalConfig.setEnableCache(false);
// XML ResultMap
globalConfig.setBaseResultMap(true);
// XML columList
globalConfig.setBaseColumnList(true);
//作者
globalConfig.setAuthor("cws");
// 自定义文件命名,注意 %s 会自动填充表实体属性! 例:表名User 则是UserDao
globalConfig.setMapperName("%sDao");
globalConfig.setXmlName("%sDao");
globalConfig.setServiceName("%sService");
globalConfig.setServiceImplName("%sServiceImpl");
globalConfig.setControllerName("%sController");
mpg.setGlobalConfig(globalConfig);
DataSourceConfig sourceConfig = new DataSourceConfig();
// 数据库类型
sourceConfig.setDbType(DbType.MYSQL);
sourceConfig.setTypeConvert(new MySqlTypeConvert() {
// 自定义数据库表字段类型转换【可选】
@Override
public DbColumnType processTypeConvert(String fieldType) {
System.out.println("转换类型:" + fieldType);
return super.processTypeConvert(fieldType);
}
});
//根据自己的需要改成自己的数据库类型
sourceConfig.setDriverName("com.mysql.jdbc.Driver");
sourceConfig.setUsername("root");
sourceConfig.setPassword("123456");
sourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/szqy08project?characterEncoding=utf8");
mpg.setDataSource(sourceConfig);
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
// .setCapitalMode(true)// 全局大写命名
// 此处可以修改为您的表前缀 例:实体tbl_user变成User
strategyConfig.setTablePrefix(new String[]{"tbl_"});
// 表名生成策略 生成小驼峰
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
mpg.setStrategy(strategyConfig);
// 包配置
PackageConfig packageConfig = new PackageConfig();
// 自定义包路径
packageConfig.setParent("com.aaa");
// 这里是控制器包名,默认 web
packageConfig.setController("controller");
packageConfig.setMapper("dao");
packageConfig.setEntity("entity");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
mpg.setPackageInfo(packageConfig);
// 注入配置 可配可不配 mapper路径的问题
InjectionConfig injectionConfig = new InjectionConfig() {
@Override
public void initMap() {
}
};
injectionConfig.setFileOutConfigList(Collections.<FileOutConfig>singletonList(new FileOutConfig("/templates/mapper.xml.vm") {
// 自定义输出文件目录
@Override
public String outputFile(TableInfo tableInfo) {
return globalConfig.getOutputDir() + tableInfo.getEntityName() + "Dao.xml";
}
}));
mpg.setCfg(injectionConfig);
// 执行生成*/
mpg.execute();
}
}
主启动类:
package com.aaa; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan(basePackages = "com.aaa.dao") //扫描dao包 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
测试类:
package com.aaa; import com.aaa.entity.Dept; import com.aaa.service.DeptService; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest class Szqy08PsmsApplicationTests { @Autowired private DeptService deptService; @Test void saveDept() { Dept dept = new Dept(); dept.setDeptName("学术部"); deptService.insert(dept); } @Test void deleteDept() { /* Dept dept = new Dept(); dept.setDeptName("学术部");*/ //按照条件删除 /* Wrapper<Dept> wrapper= new EntityWrapper<>(); wrapper.eq("dept_name","学术部"); deptService.delete(wrapper);*/ //按照主键批量删除boolean deleteBatchIds(Collection<? extends Serializable> var1); /* List<Integer> ids= new ArrayList<>(); ids.add(108); ids.add(109); deptService.deleteBatchIds(ids);*/ //安装主键单个删除 deptService.deleteById(110); } @Test void updateDept() { Dept dept = new Dept(); dept.setDeptId(111); dept.setDeptName("军机处"); deptService.updateById(dept); } /** * 测试排序 */ @Test void OrderDept() { Wrapper<Dept> wrapper= new EntityWrapper<>(); wrapper.orderBy("order_num",false); List<Dept> deptList = deptService.selectList(wrapper); for (Dept dept : deptList) { System.out.println(dept.toString()); } } /** * 测试模糊查询 */ @Test void likeDept() { Wrapper<Dept> wrapper= new EntityWrapper<>(); wrapper.like("dept_name","市场"); List<Dept> deptList = deptService.selectList(wrapper); for (Dept dept : deptList) { System.out.println(dept.toString()); } } /** * 分页查询 */ @Test void pageDept() { /** * public Page(int current, int size) { * super(current, size); * current 当前第几页 * size是一页显示多少行 * this.records = Collections.emptyList(); * } */ Page<Dept> page = new Page(2,3); Page<Dept> deptPage = deptService.selectPage(page); //从分页结果中提取list集合 List<Dept> deptList = deptPage.getRecords(); for (Dept dept : deptList) { System.out.println(dept.toString()); } } }