使用Mybatis就一定离不开MyBatis Generator这款代码生成插件,而这款插件自身还提供了插件拓展功能用于强化插件本身,官方已经提供了一些拓展插件,本文介绍通过该插件机制来强化Mybatis Generator本身,方便和减少我们平时的代码开发量。
项目地址: https://github.com/cayzlh/mybatis-mbg-plugins
直接引入, 在pom.xml的相应节点中添加:
<dependencies>
<dependency>
<groupId>com.cayzlh</groupId>
<artifactId>plugins</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>cayzlh-mvn-repo</id>
<name>cayzlh-mvn-repo</name>
<url>https://raw.github.com/cayzlh/mavenRepository/master/repository</url>
</repository>
</repositories>
或者, 下载代码, 编译后install到本地仓库
MBG的具体用法及配置文件等, 这里不做阐述, 查看 MBG官方文档 即可.
提供一个参考配置模板: generatorConfig.xml
在项目中使用
在pom.xml 中添加:
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
<dependency>
<groupId>com.cayzlh</groupId>
<artifactId>plugins</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
生成代码
在idea的maven管理界面找到插件, 右键
- run
.
然后, 生成的代码就到了你指定的目录了.
使用效果
Model
/**
* Description:
* 用来测试mbg
*
* Table:
* t_demo
*
* @author Ant丶
* @mbg.generated
*/
public class Demo implements Serializable {
/**
* Description:
* ID
*
* Column:
* t_demo.id
*
* @mbg.generated
*/
private Long id;
/**
* Description:
* 邮箱
*
* Column:
* t_demo.email
*
* @mbg.generated
*/
private String email;
/**
*
* Column:
* t_demo.phone
*
* @mbg.generated
*/
private String phone;
/**
*
* Column:
* t_demo.createTime
*
* @mbg.generated
*/
private Date createtime;
/**
*
* Column:
* t_demo.updateTime
*
* @mbg.generated
*/
private Date updatetime;
....
}
mapper.java
public interface DemoMapper {
/**
* Description: 使用Example统计总数
*
* @param example example
* @return countByExample 的结果.
* @mbg.generated
*/
long countByExample(DemoExample example);
/**
* Description: 根据Example删除
*
* @param example example
* @return deleteByExample 的结果.
* @mbg.generated
*/
int deleteByExample(DemoExample example);
/**
* Description: 根据主键删除
*
* @param id id
* @return deleteByPrimaryKey 的结果.
* @mbg.generated
*/
int deleteByPrimaryKey(Long id);
/**
* Description: 插入一条记录
*
* @param record record
* @return insert 的结果.
* @mbg.generated
*/
int insert(Demo record);
/**
* Description: 插入一条记录, 实现选择入库
*
* @param record record
* @return insertSelective 的结果.
* @mbg.generated
*/
int insertSelective(Demo record);
/**
* Description: 根据Example查询返回数据
*
* @param example example
* @return selectByExample 的结果.
* @mbg.generated
*/
List<Demo> selectByExample(DemoExample example);
/**
* Description: 查询结果选择性返回
*
* @param example example
* @param selective selective
* @return selectByExampleSelective 的结果.
* @mbg.generated
*/
List<Demo> selectByExampleSelective(@Param("example") DemoExample example, @Param("selective") Demo.Column ... selective);
/**
* Description: 根据主键查询返回数据
*
* @param id id
* @return selectByPrimaryKey 的结果.
* @mbg.generated
*/
Demo selectByPrimaryKey(Long id);
/**
* Description: 通过主键查询的结果选择性返回
*
* @param id id
* @param selective selective
* @return selectByPrimaryKeySelective 的结果.
* @mbg.generated
*/
Demo selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") Demo.Column ... selective);
/**
* Description: Selective选择插入更新增强功能
*
* @param record record
* @param example example
* @return updateByExampleSelective 的结果.
* @mbg.generated
*/
int updateByExampleSelective(@Param("record") Demo record, @Param("example") DemoExample example);
/**
* Description: 根据Example更新数据
*
* @param record record
* @param example example
* @return updateByExample 的结果.
* @mbg.generated
*/
int updateByExample(@Param("record") Demo record, @Param("example") DemoExample example);
/**
* Description: 根据主键更新数据, 可选择
*
* @param record record
* @return updateByPrimaryKeySelective 的结果.
* @mbg.generated
*/
int updateByPrimaryKeySelective(Demo record);
/**
* Description: 根据主键更新数据
*
* @param record record
* @return updateByPrimaryKey 的结果.
* @mbg.generated
*/
int updateByPrimaryKey(Demo record);
/**
* Description: 查询单条数据
*
* @param example example
* @return selectOneByExample 的结果.
* @mbg.generated
*/
Demo selectOneByExample(DemoExample example);
/**
* Description: 查询单条数据字段选择性返回
*
* @param example example
* @param selective selective
* @return selectOneByExampleSelective 的结果.
* @mbg.generated
*/
Demo selectOneByExampleSelective(@Param("example") DemoExample example, @Param("selective") Demo.Column ... selective);
/**
* Description: 批量插入
*
* @param list list
* @return batchInsert 的结果.
* @mbg.generated
*/
int batchInsert(@Param("list") List<Demo> list);
/**
* Description: 可选择字段批量插入
*
* @param list list
* @param selective selective
* @return batchInsertSelective 的结果.
* @mbg.generated
*/
int batchInsertSelective(@Param("list") List<Demo> list, @Param("selective") Demo.Column ... selective);
/**
* Description: 存在即更新(saveOrUpdate)
*
* @param record record
* @return upsert 的结果.
* @mbg.generated
*/
int upsert(Demo record);
/**
* Description: 存在即更新, 可选字段(saveOrUpdate)
*
* @param record record
* @return upsertSelective 的结果.
* @mbg.generated
*/
int upsertSelective(Demo record);
}
使用
Demo链式调用
Demo demo = new Demo.Builder()
.email("243689185@qq.com")
.phone("13800138000")
.build();
Example使用
DemoExample example = new DemoExample()
.createCriteria()
.andIdEqualTo(1l)
.example();
以上

相关推荐
版权声明
- 本文链接: https://www.cayzlh.com/2018/05/26/8ab70c16.html
- 版权声明: 文章内容仅用作学习和分享,如有雷同,纯属拷贝。
留言区