MyBatis Plus (六) --------- 代码生成器

本文详细介绍了MyBatis-Plus(MP)的代码生成器,包括其依赖、配置选项和使用示例。MP代码生成器支持自定义设置,能生成实体类、Mapper接口、Mapper映射文件、Service层和Controller层,适应不同需求。推荐使用驼峰命名策略以优化性能。此外,还展示了如何配置模板引擎和数据源,以及如何使用@ServiceImpl实现DAO层和Service层的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  1. MP 提供了大量的自定义设置,生成的代码完全能够满足各类型的需求
  2. MP 的代码生成器 和 Mybatis MBG 代码生成器:
    MP 的代码生成器都是基于 java 代码来生成。MBG 基于 xml 文件进行代码生成
    MyBatis 的代码生成器可生成: 实体类、Mapper 接口、Mapper 映射文件
    MP 的代码生成器可生成: 实体类(可以选择是否支持 AR)、Mapper 接口、Mapper 映射文件、 Service 层、Controller 层
  3. 表及字段命名策略选择
    在 MP 中,我们建议数据库表名 和 表字段名采用驼峰命名方式, 如果采用下划线命名方式 请开启全局下划线开关,如果表名字段名命名方式不一致请注解指定,我们建议最好保持一致。
    这么做的原因是为了避免在对应实体类时产生的性能损耗,这样字段不用做映射就能直接和实体类对应。当然如果项目里不用考虑这点性能损耗,那么你采用下滑线也是没问题的,只需要在生成代码时配置 dbColumnUnderline 属性就可以

一、代码生成器依赖

模板引擎

MP 的代码生成器默认使用的是 Apache 的 Velocity 模板,当然也可以更换为别的模板技术,例如 freemarker。此处不做过多的介绍。

需要加入 Apache Velocity 的依赖

<dependency>
	<groupId>org.apache.velocity</groupId>
	<artifactId>velocity-engine-core</artifactId>
	<version>2.0</version>
</dependency>

加入 slf4j,查看日志输出信息

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.7</version>
</dependency>
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-log4j12</artifactId>
	<version>1.7.7</version>
</dependency>

二、MP 代码生成器示例代码

@Test
public void testGenerator() {
	//全局配置
	GlobalConfig config = new GlobalConfig();
	config.setActiveRecord(true) //是否支持AR模式
	  .setAuthor("weiyunhui") //作者
	  .setOutputDir("D:\\workspace_my\\mp03\\src\\main\\java")
      //生成路径
      .setFileOverride(true)//文件覆盖
      .setServiceName("%sService") //设置生成的service接口名 首字母是否为I
      .setIdType(IdType.AUTO) //主键策略
    ;
    //数据源配置
	DataSourceConfig dsConfig = new DataSourceConfig();
	dsConfig.setDbType(DbType.MYSQL)
	.setUrl("jdbc:mysql://localhost:3306/javaEE_0228")
	.setDriverName("com.mysql.jdbc.Driver")
	.setUsername("root")
	.setPassword("1234");
	
	//策略配置
	StrategyConfig stConfig = new StrategyConfig();
	stConfig.setCapitalMode(true) // 全局大写命名
	  .setDbColumnUnderline(true) //表名 字段名 是否使用下滑线命名
	  .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
	  .setInclude("tbl_employee") //生成的表
      .setTablePrefix("tbl_"); // 表前缀
	  //包名策略
	
	PackageConfig pkConfig = new PackageConfig();
	
	pkConfig.setParent("com.fancy.mp")
	  .setController("controller")
	  .setEntity("beans")
	  .setService("service");

	AutoGenerator ag = new AutoGenerator().setGlobalConfig(config)
	 .setDataSource(dsConfig)
	 .setStrategy(stConfig)
	 .setPackageInfo(pkConfig);
	
	ag.execute();
}

三、ServiceImpl 说明

EmployeeServiceImpl 继承了 ServiceImpl 类,mybatis-plus 通过这种方式为我们注入了 EmployeeMapper,这样可以使用 service 层默认为我们提供的很多方法,也可以调用我们自己在 dao 层编写的操作数据库的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在森林中麋了鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值