目前公司所做项目的各模块的dao层接口有大量数据库查询的方法,大部分都是通用的CURD,所以在在网上找到了Mybatis-Plus这个插件,该插件具有通用CURD接口,而且具有前后端代码生成器的功能,这次主要介绍后端代码生成器的使用。
1.Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
码云地址:https://gitee.com/baomidou/mybatis-plus
githb地址:https://github.com/baomidou/mybatis-plus
2.使用方法
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>maven 官方最新版本为准</version>
</dependency>
引入jar包后开始编写代码生成器示例文件
这个我使用了读取properties的方式来生成代码
properties示例如下
Mybatis-Plus.properties
#此处为本项目src所在路径(代码生成器输出路径)
OutputDir=D:/XXX/src
#数据库表名(此处切不可为空,如果为空,则默认读取数据库的所有表名)
tableName=XXX
#生成代码类名类名
className=XXX
#设置作者
author=XXX
#
#
#正常情况下,下面的代码无需修改!!!!!!!!!!
#
#
#自定义包路径
parent=com.XXX
#数据库地址
url=jdbc:mysql://127.0.0.1:3306/XXX?useUnicode=true&characterEncoding=utf-8
#数据库用户名
userName=root
#数据库密码
passWord=XXX
代码生成器示例文件
package com.test;
import java.util.ResourceBundle;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
*
* 自动生成映射工具类
*
* @author hubin
*
*/
public class AutoGeneratorHelper {
/**
* <p>
* 测试 run 执行
* </p>
* <p>
* 更多使用查看 http://mp.baomidou.com
* </p>
*/
public static void main(String[] args) {
//用来获取Mybatis-Plus.properties文件的配置信息
ResourceBundle rb = ResourceBundle.getBundle("Mybatis-Plus");
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(rb.getString("OutputDir"));
gc.setFileOverride(true);
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("com.mysql.jdbc.Driver");
dsc.setUsername(rb.getString("userName"));
dsc.setPassword(rb.getString("passWord"));
dsc.setUrl(rb.getString("url"));
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
//strategy.setTablePrefix(new String[] { "bmd_", "mp_" });// 此处可以修改为您的表前缀
strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
strategy.setInclude(new String[] { rb.getString("tableName")}); // 需要生成的表
// 字段名生成策略
// strategy.setFieldNaming(NamingStrategy.underline_to_camel);
//strategy.setSuperServiceImplClass("com.baomidou.springwind.service.support.BaseServiceImpl");
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
// pc.setModuleName("test");
pc.setParent(rb.getString("parent"));// 自定义包路径
pc.setController("controller."+rb.getString("className"));// 这里是控制器包名,默认 web
pc.setEntity("model."+rb.getString("className"));
pc.setMapper("dao."+rb.getString("className"));
pc.setXml("mapping."+rb.getString("className"));
pc.setService("service."+rb.getString("className"));
pc.setServiceImpl("service."+rb.getString("className")+".impl");
mpg.setPackageInfo(pc);
// 执行生成
mpg.execute();
}
}
运行即可生成代码