博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot+mybatis项目自动生成
阅读量:4880 次
发布时间:2019-06-11

本文共 3564 字,大约阅读时间需要 11 分钟。

springboot_data_access_demo基于rapid,根据自定义模版生成的基于mybatis+mysql的数据库访问示例项目。简单配置数据库信息,配置不同的生成策略生成可以直接运行访问数据库的项目,吸取了mybatis generator的动态条件优势,同时又稍有扩展。可以生成简单易懂的sql,支持大部分单表操作,一般情况下不需要自己动手写sql。模板可以根据自己需求做相应的修改()。

1、自动生成支持的方法有:

public interface BaseDaoMapper
{ /** * 根据 key 查询 * @param key 查询的id * @return */ T getByPrimaryKey(E key); /** * 根据 keyList 查询 * @param keyList 查询id的集合 * @return */ List
getByPrimaryKeyList(@Param("keyList") List
keyList); /** * 根据条件查询 * @param example 查询条件 * @return */ T getSingleByPredicate(BaseExample example); /** * 根据条件查询所有 * @param example 查询条件 * @return */ List
getAllByPredicate(BaseExample example); /** * 根据条件查询 * @param example 查询条件 * @return */ int queryCount(BaseExample example); /** * 分页查询(配合pageHelper) * @param example 查询条件 * @return */ List
getListByPage(BaseExample example); /** * 根据key更新除了key以外的其他字段 * @param record * @return */ int updateByPrimaryKey(@Param("record") T record); /** * 按条件更新 * @param record 需要更新的字段 * @param example 需要满足的条件 * @return */ int updateByPredicate(@Param("record") T record, @Param("example")BaseExample example); /** * 新增记录 * @param entity 需要新增的entity * @return */ int insert(T entity); /** * 批量新增 * @param list 批量新增的entity * @return */ int batchInsert(@Param("list") List
list);}

生成的

2、自己扩展

public interface UserinfoMapper extends BaseDaoMapper
{}

在对应的Mapper里可以自己扩展,然后只需要在对应的 UserinfoExtendMapper.xml 里写自定义的sql 即可。

3、生成结构

生成的项目结构:(com-xxx-demo 可以通过生成器自己配置) 

  • mr-xxx-demo-common
  • mr-xxx-demo-dao
  • mr-xxx-demo-model
  • mr-xxx-demo-server
  • mr-xxx-demo-service 

目前仅支持单个数据库的配置,后续考虑同时支持多个。此项目是以名为Test的数据库生成的示例

  xxxExample支持指定查询列、查询条件、排序字段生成动态sql

示例: 

public void test() {        UserinfoEntity entity1 = new UserinfoEntity();        entity1.setSex(1);        entity1.setUsername("zhangsan");        UserinfoEntity entity2 = new UserinfoEntity();        entity2.setSex(2);        entity2.setUsername("lisi");        BaseExample example = UserinfoExample.builder()                //指定查询列为 id,username                .includeSelectFieldClause(UserinfoExample.builderSelectFieldCriteria().id().username())                //指定查询条件为 id in (5,6)                .addCriteria(UserinfoExample.builderCriteria().andIdIn(Lists.newArrayList(5, 6)))                //指定 order by id asc                .orderByClause(UserinfoExample.buildOrderByCriteria().orderByIdAsc())                .build();        BaseExample updateExample = UserinfoExample.builder()                .addCriteria(UserinfoExample.builderCriteria().andIdIn(Lists.newArrayList(5, 6)))                .build();        userinfoMapper.updateByPredicate(entity1, updateExample);        userinfoMapper.getSingleByPredicate(example);        userinfoMapper.getByPrimaryKey(1);        userinfoMapper.getByPrimaryKeyList(Lists.newArrayList(1, 2, 3));        userinfoMapper.batchInsert(Lists.newArrayList(entity1, entity2));        userinfoMapper.getAllByPredicate(example);        userinfoMapper.getListByPage(example);        userinfoMapper.queryCount(example);        entity1.setId(5);        entity1.setUsername("lisi - 22222");        userinfoMapper.updateByPrimaryKey(entity1);        userinfoMapper.insert(entity2);    }
View Code

 

转载于:https://www.cnblogs.com/mr-yang-localhost/p/9742186.html

你可能感兴趣的文章
扯蛋css
查看>>
[洛谷P4149][IOI2011]Race
查看>>
关于多线程编程的一点思考
查看>>
复利计算--web版--总结--软件工程
查看>>
OPMN
查看>>
hdu 1999 不可摸数
查看>>
抽象类与接口比较
查看>>
.Net小白的大学四年,内含面经
查看>>
幂的求和取模
查看>>
利用 Project Lombok 自定义 AST 转换
查看>>
LOG收集系统(一):原日志至收集
查看>>
【文摘】经营十二条
查看>>
Gym 100507H - Pair: normal and paranormal
查看>>
查看程序设计语言排行榜的网站
查看>>
转: 数据的原理性文章
查看>>
清除浮动的方法
查看>>
Logstash连接Elasticsearch异常
查看>>
洛谷P4287 [SHOI2011]双倍回文(回文自动机)
查看>>
用户交互程序,格式化输出
查看>>
GNOME的发展与对比
查看>>