mybatis plus自动生成代码

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得到解决
参考:

https://blog.csdn.net/Yuriey/article/details/80423504


运行成功会将对应库里的表生成各类文件,对应结构是这样的


生成的mapper和service都包含基本的CRUD功能,另外,生成的service接口使用时,由于在impl实现类上使用了注解,所以实际@Autowired注解的service是一个实现类。


大部分细节都写在代码里的注释中——