日常开发或接私活以后,有时候我们需要快速创建项目进行开发,除了需要项目框架模板(如SSM,SSH,Spring boot等框架模板),我们还需要快速的生成一些简易代码.
Mybatis generator代码生成器,根据数据表名称生成对应的Model、Mapper、Service、Controller简化开发。
此版本mybatis gennerator无需配置任何配置文件,只需添加maven依赖后,执行test类就能生成,且生成的mapper接口简单易用.是目前配置较为简单,方法非常实用的,是目前较为优秀的mabatis自动生成工具.
****此种方发生成代码无需单独建立工程,而是将代码生成器放在项目的测试包下****
因此生产时,在建表之后,可以边开发边根据新的业务需求随时生成新的代码.如下图所示,test包下的CodeGenerator是生成代码的核心类.
以下是使用步骤:
- 添加maven依赖:
主要有3个依赖要添加: mybatis自动生成工具(org.mtbatis.generator),mybatis工具包(tk.mybatis),代码生成器依赖(org.freemarker)
<!--mybatis自动生成工具-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
<scope>test</scope>
</dependency>
<!-- mybatis 工具包-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.2</version>
</dependency>
<!--代码生成器依赖-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
<scope>test</scope>
</dependency>
2. 在工程的core包下放入2个接口(自动生成工具的核心继承接口,类名为Mapper和Service),这两个类的内容不能变,名称可以根据CodeGenerator类中的配置动态变化
代码如下:
package com.zt.core;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.special.InsertListMapper;
/**
* 定制版MyBatis Mapper插件接口,如需其他接口参考官方文档自行添加。
*/
public interface Mapper<T>
extends
BaseMapper<T>,
ConditionMapper<T>,
IdsMapper<T>,
InsertListMapper<T>{
}
package com.zt.core;
import tk.mybatis.mapper.entity.Condition;
import java.util.List;
public interface Service<T> {
long count(T model);
long countByCondition(Condition condition);
void insert(T model);
void insertSelective(T model);
void insertList(List<T> models);
void deleteByPrimaryKey(Object id);
void deleteByIds(String ids);
void deleteByCondition(Condition condition);
void updateByCondition(T model, Condition condition);
void updateByConditionSelective(T model, Condition condition);
void updateByPrimaryKey(T model);
void updateByPrimaryKeySelective(T model);
T selectByPrimaryKey(Object id);
T selectOne(T model);
List<T> selectAll();
T selectFirst(T model);
T selectFirstByCondition(Condition condition);
List<T> select(T model);
List<T> selectForStartPage(T model, Integer pageNum, Integer pageSize);
List<T> selectByIds(String ids);
List<T> selectByCondition(Condition condition);
List<T> selectByConditionForStartPage(Condition condition, Integer pageNum, Integer pageSize);
}
3.在test包的资源文件夹下(resources)添加模板.如下图
以下是模板资源内容(创建同名目录和文件,将代码复制进去即可)
controller.ftl:
package ${basePackage}.web;
import ${basePackage}.core.BasePageSearch;s
import ${basePackage}.dto.IDValid;
import ${basePackage}.result.PageResult;
import ${basePackage}.result.Result;
import ${basePackage}.result.ResultCode;
import ${basePackage}.model.$