出于不喜欢 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 表示鼓励。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.