您当前的位置: 首页 >  mybatis

梁云亮

暂无认证

  • 1浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MyBatisPlus利用官方提供的代码生成器生成代码

梁云亮 发布时间:2020-04-18 13:53:08 ,浏览量:1

借助MybatisPlus的代码生成器,可以生成Java实体类、mapper接口、映射文件以及service和controller,可以配置实体类是否支持AR等

第一步:创建Maven项目,按如下所示引入Maven依赖:


    junit
    junit
    4.12
    test



    org.apache.logging.log4j
    log4j-api
    2.12.1


    org.apache.logging.log4j
    log4j-core
    2.12.1



    org.projectlombok
    lombok
    1.18.10



    ch.qos.logback
    logback-classic
    1.2.3



    org.freemarker
    freemarker
    2.3.28




    mysql
    mysql-connector-java
    8.0.13


    com.alibaba
    druid
    1.1.12



    com.baomidou
    mybatis-plus
    3.3.0


    com.baomidou
    mybatis-plus-generator
    3.3.0


    com.baomidou
    mybatis-plus-core
    3.3.0


    com.baomidou
    mybatis-plus-extension
    3.3.0


    com.baomidou
    mybatis-plus-annotation
    3.3.0




    org.springframework
    spring-context
    5.2.1.RELEASE


    org.springframework
    spring-aop
    5.2.1.RELEASE


    org.springframework
    spring-jdbc
    5.2.1.RELEASE


    org.springframework
    spring-webmvc
    5.2.1.RELEASE


    org.springframework
    spring-test
    5.2.1.RELEASE
    test

第二步:在pom.xml中加上如下配置以指定生成的Mapper XML文件在mybatis-config.xml中的配置有效:


    
        src/main/java
        
            **/*.xml
        
    

第二步:按如下所示编写代码生成器工具类:

public class MyBatisPlusCodeGenerator {
    //包名
    private static final String BASE_PACKAGE = "com.hc";
    private static final String MAPPER_PACKAGE = "mapper";
    private static final String SERVICE_PACKAGE = "service";
    private static final String CONTROLLER_PACKAGE = "controller";
    private static final String ENTITY_PACKAGE = "bean";
    private static final String XML_PACKAGE = "mapper.impl";
    // 模块名称
    private static final String MODULE_NAME = "test";
    //输出文件的路径
    private static final String OUT_PATH = System.getProperty("user.dir")+ "/src/main/java";
    //代码生成者
    private static final String AUTHOR = "梁云亮";
    //JDBC相关配置
    private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/db_test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
    private static final String USER_NAME = "root";
    private static final String PASSWORD = "root";
    // 需要生成代码的表的名字
    private static final String[] INCLUDE_TABLE = {"tb_emp"};
    //    private static final String[] EXCLUDE_TABLE = {"test"};
    public static void main(String[] args) {
// ---- ① ----- 
        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig().setOutputDir(OUT_PATH)// 输出目录
                .setFileOverride(true)// 是否覆盖文件
                .setActiveRecord(true)  // 开启 activeRecord 模式
             // .setEnableCache(false)  // XML 二级缓存
             // .setBaseResultMap(false)  // XML ResultMap
             // .setBaseColumnList(true)  // XML columList
                .setAuthor(AUTHOR)
                .setIdType(IdType.AUTO)//主键策略
                .setXmlName("%sMapper")
                .setMapperName("%sDao")
                .setServiceName("%sService") //设置service接口名字首字母没有I
                .setServiceImplName("%sServiceImpl")
                .setControllerName("%sController");
        // 数据源配置
        DataSourceConfig dataSource = new DataSourceConfig()
                .setDbType(DbType.MYSQL)// 数据库类型
                .setUrl(URL)
                .setDriverName(DRIVER)
                .setUsername(USER_NAME)
                .setPassword(PASSWORD)
                .setTypeConvert(new MySqlTypeConvert() {
                    @Override
                    public IColumnType processTypeConvert(GlobalConfig globalConfig, String
            fieldType) {// 自定义数据库表字段类型转换(可选)
                        System.out.println("转换类型:" + fieldType);
                        // if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
                              // return DbColumnType.BOOLEAN;
                        // }
                        return super.processTypeConvert(globalConfig, fieldType);
                    }
                });
        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig()
                .setCapitalMode(true)// 全局大写命名
                .setTablePrefix("tb_")//表名前缀
                .setEntityLombokModel(true)//使用lombok
                .setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
                .setInclude(INCLUDE_TABLE) // 需要生成的表
             // .setExclude(EXCLUDE_TABLE) //  与  只能配置一项
             //  -------------- ② -------------
             // .setEntityColumnConstant(true) // 【实体】是否生成字段常量(默认 false)
             // .setSuperEntityClass("com.hc.bean.BaseEntity") //自定义实体父类
             // .setSuperEntityColumns(new String[]{"test_id"}) // 自定义实体,公共字段
             // .setSuperMapperClass("com.hc.bean.BaseMapper") //自定义mapper父类
             // .setSuperServiceClass("com.hc.bean.BaseService") //自定义service父类
             // .setSuperServiceImplClass("com.hc.bean.BaseServiceImpl") //自定义service实现类父类
             // .setSuperControllerClass("com.hc.bean.TestController")//自定义controller父类
             // .setEntityBuilderModel(true) // 【实体】是否为构建者模型(默认 false)
             // .setEntityBooleanColumnRemoveIsPrefix(true)//是否移除Boolean类型is前缀
             // .setRestControllerStyle(true)
             // .setControllerMappingHyphenStyle(true)
                ;
        // 包配置
        PackageConfig packageConfig = new PackageConfig()
             // .setModuleName(MODULE_NAME)
                .setParent(BASE_PACKAGE) // 自定义包路径
                .setEntity(ENTITY_PACKAGE)
                .setMapper(MAPPER_PACKAGE)
                .setXml(XML_PACKAGE)
                .setService(SERVICE_PACKAGE)
                .setController(CONTROLLER_PACKAGE) ;// 这里是控制器包名  
        AutoGenerator mpg = new AutoGenerator()
                .setGlobalConfig(globalConfig)
                .setDataSource(dataSource)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig)
                .setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();      // 执行生成
    }
}

生成的项目的包层次关系如下:

  • Emp.java
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_emp")
public class Emp extends Model {
    private static final long serialVersionUID = 1L;
    @TableId(value = "empno", type = IdType.AUTO)  
    private Integer empno;    // 编号
    private String ename;    // 员工姓名
    private String job;    // 工作
    private Integer mgr;    // 上级
    private LocalDate hiredate;    // 受顾日期
    private BigDecimal sal;    // 工资
    private BigDecimal comm;    // 资金
    private Integer deptno;    // 部门编号
    @Override
    protected Serializable pkVal() {
        return this.empno;
    }
}
  • EmpDao.java
public interface EmpDao extends BaseMapper {
}
  • EmpMapper.xml




  • EmpService.java
public interface EmpService extends IService {
}
  • EmpServiceImpl.java
@Service
public class EmpServiceImpl extends ServiceImpl implements EmpService {
}
  • EmpController.java
@Controller
@RequestMapping("/emp")
public class EmpController {
}
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0452s