
出于不喜欢 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 Dec 5, 2017 via Android 支持下 |
2 twogoods OP @gejun123456 改进了下,正式发个帖,话说看你头像真眼熟 |