mybatis plus的核心功能之一就是能自动生成代码。
类似mybatis的逆向工程,但是mybatis plus能生成mapper、service、controller、serviceImpl等,而且封装好了基本的CRUD功能,在xml中找不到对应的sql语句。
创建一个test类
如下
package com.atguigu.mp.test;
import javax.swing.text.DefaultStyledDocument.AttributeUndoableEdit;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.baomidou.mybatisplus.enums.IdType;
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.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class TestMP {
/**
* 代码生成 示例代码 */ @Test
public void testGenerator() {
//1. 全局配置
GlobalConfig config = new GlobalConfig();
config.setActiveRecord(true) // 是否支持AR模式
.setAuthor("weiyunhui") // 作者
/* .setOutputDir("D:\\workspace_mp\\mp03\\src\\main\\java") // 生成路径*/
.setOutputDir("E:\\study\\代码\\jjjj\\代码\\mp03\\src\\main\\java")
.setFileOverride(true) // 文件覆盖
.setIdType(IdType.AUTO) // 主键策略
.setServiceName("%sService") // 设置生成的service接口的名字的首字母是否为I
// IEmployeeService .setBaseResultMap(true)
.setBaseColumnList(true);
//2. 数据源配置
DataSourceConfig dsConfig = new DataSourceConfig();
dsConfig.setDbType(DbType.MYSQL) // 设置数据库类型
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/mpdemo?useSSL=false&&serverTimezone=GMT")
.setUsername("root")
.setPassword("olonn");
//3. 策略配置
StrategyConfig stConfig = new StrategyConfig();
stConfig.setCapitalMode(true) //全局大写命名
.setDbColumnUnderline(true) // 指定表名 字段名是否使用下划线
.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
.setInclude("user") ;
/*.setTablePrefix("tbl_")
.setInclude("tbl_employee"); // 生成的表*/ //4. 包名策略配置
PackageConfig pkConfig = new PackageConfig();
pkConfig.setParent("com.atguigu.mp")
.setMapper("mapper")
.setService("service")
.setController("controller")
.setEntity("beans")
.setXml("mapper");
//5. 整合配置
AutoGenerator ag = new AutoGenerator();
ag.setGlobalConfig(config)
.setDataSource(dsConfig)
.setStrategy(stConfig)
.setPackageInfo(pkConfig);
//6. 执行
ag.execute();
}
}
添加相关的依赖
这里我的数据库使用的mysql8.0,用的mysql-connector-java5.1.37报错,我改成了mysql-connector-java8.0.11,结果还是出错,提示SSL什么的,于是在url后加上了useSSL=false,然后又提示时区的错误,又在后面加上了serverTimezone=GMT,终于能运行成功了。
解决方法参考:
https://blog.csdn.net/qq_37630354/article/details/82814330
https://blog.csdn.net/u010429286/article/details/7775017
后记,我又遇到了新的连接问题,本来好好的,结果这次登陆又不能连接数据库了,网上查了一遍,在url后面加上了allowPublicKeyRetrieval=true得到解决
参考:
运行成功会将对应库里的表生成各类文件,对应结构是这样的
生成的mapper和service都包含基本的CRUD功能,另外,生成的service接口使用时,由于在impl实现类上使用了注解,所以实际@Autowired注解的service是一个实现类。
大部分细节都写在代码里的注释中——