MyBatis有MyBatis-Generator和MyBatis-Plus能够生成代码,但是对于JPA,上节的总结中,可以通过Hibernate连接db自动生成entity。对于一般的CURD操作,继承JpaRepository生成的方法就基本够用,网上搜了下,貌似没有自动根据entity生成repository的工具。
好在repository接口只是继承JpaRepository,并没有太多需要填充的代码,可以通过模板技术进行生成。
package top.cfish.searchhouse.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import top.cfish.searchhouse.entity.User;
public interface UserRepository extends JpaRepository<User, Integer>
{
User findByName(String name);
User findUserByPhoneNumber(String phoneNumber);
}
一、模板选取
velocity已不再维护,可以使用freemarker进行生成,但是在搜索时,发现了国人的一款模板框架Beetl,其实现在国人的开源作品越来越专业了,这次就选用Beetl。
Beetl是一款6倍于Freemarker的超高性能的Java模板引擎,来自于中国!!BeetlSQL是一款功能强大,以SQL为中心,使用简单的全功能的ORMapping工具,支持自动生成代码,内置大量SQL语句,支持市面上绝大多数主流数据库。Beetl和BeetlSQL均能与目前市面上的大多数流行框架无缝整合。
二、基本使用
由于repository接口代码很简单,所以没有使用太多模板引擎的功能,更多的操作参考官网文档,http://ibeetl.com/guide/#beetl。
A、maven依赖
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>2.7.13</version>
</dependency>
B、工具类功能梳理
- 根据数据表的定义,通过Hibernate连接db自动生成entity实体类,放在entity包。
- 修改srcmainresourcesautocodebeetl.properties文件中的项目路径、包名、模板名称名等配置;
- 根据Beetl语法格式编写srcmainresourcesautocodetemplaterepository.txt模板;
- 通过BeetlUtil类中的main方法自动生成代码至repository包。
三、Code
这里就不大段大段贴代码了,参考:https://github.com/isisiwish/search-house。
以后有其他需求了,再对Beetl进行研习。