出于不喜欢 mybatis generator 那种生成代码的方式,于是尝试了另一种基于注解来表达 SQL 的方式:
@Table(name = "T_User")
public class User {
@Id("id")
private int id;
private String username;
private int age;
}
上面的 model 定义了模型和数据库表的关系,那么下面的方法签名你能猜出 sql 长什么样子吗?
@DaoGen(model = User.class)
public interface UserDao {
@Select
@OrderBy("id desc")
List<User> queryUser(@Condition(criterion = Criterions.EQUAL, column = "username") String name,
@Condition(criterion = Criterions.GREATER, attach = Attach.OR) int age,
@Limit int limit, @OffSet int offset);
@Select
List<User> queryUser2(@Condition(criterion = Criterions.GREATER, column = "age") int min,
@Condition(criterion = Criterions.LESS, column = "age") int max);
@Insert(useGeneratedKeys = true, keyProperty = "id")
int insert(User user);
@BatchInsert(columns = "username,age")
int batchInsert(List<User> users);
@Update
@ModelConditions({
@ModelCondition(field = "id")
})
int update(User user);
@Delete
int delete(@Condition(criterion = Criterions.GREATER, column = "age") int min,
@Condition(criterion = Criterions.LESS, column = "age") int max);
}
你只需定义一个 model 和一个 mapper 接口,xml 会在编译期自动生成在同一包下。理论上 mybatis generator 能完成的 sql,这个小工具也都可以完成。
如果你喜欢自己手写 xml 里的 sql,那么你一定在方法参数上用过@Param
注解,针对@Param
的重复性工作,小工具借鉴了 lombok 的方式,增加了一个叫做@Params
的注解,它会在编译期修改抽象语法树,自动给每一个方法的参数加上@Param
注解。
详情请移步github,如果对你有帮助,欢迎送出 star 表示鼓励。
1
gejun123456 2017-12-05 12:26:45 +08:00 via Android
支持下😁
|
2
twogoods OP @gejun123456 改进了下,正式发个帖,话说看你头像真眼熟😂
|