springboot+mybatis項目自動生成


springboot_data_access_demo基於rapid,根據自定義模版生成的基於mybatis+mysql的數據庫訪問示例項目。簡單配置數據庫信息,配置不同的生成策略生成可以直接運行訪問數據庫的項目,吸取了mybatis generator的動態條件優勢,同時又稍有擴展。可以生成簡單易懂的sql,支持大部分單表操作,一般情況下不需要自己動手寫sql。模板可以根據自己需求做相應的修改(github地址)。

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

public interface BaseDaoMapper<T, E> {
    /**
     * 根據 key 查詢
     * @param key 查詢的id
     * @return
     */
    T getByPrimaryKey(E key);

    /**
     * 根據 keyList 查詢
     * @param keyList 查詢id的集合
     * @return
     */
    List<T> getByPrimaryKeyList(@Param("keyList") List<E> keyList);

    /**
     * 根據條件查詢
     * @param example 查詢條件
     * @return
     */
    T getSingleByPredicate(BaseExample example);

    /**
     * 根據條件查詢所有
     * @param example 查詢條件
     * @return
     */
    List<T> getAllByPredicate(BaseExample example);

    /**
     * 根據條件查詢
     * @param example 查詢條件
     * @return
     */
    int queryCount(BaseExample example);

    /**
     * 分頁查詢(配合pageHelper)
     * @param example 查詢條件
     * @return
     */
    List<T> 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<T> list);
}

生成的mapper.xml示例

2、自己擴展

public interface UserinfoMapper extends BaseDaoMapper<UserinfoEntity, java.lang.Integer> {

}

在對應的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM