之前用Mybatis的时候,我都是把SQL语句写在.XML文件里,后来会把简单的SQL写在注解里,后来发现XML好烦,能直接用Java写就太好了,但是单纯的注解用来写SQL语句是不够的,所以今天就记下关于SelectProvider的用法
@SelectProvider 有2个必备的参数,type,指定生成SQL的Class类型,method指定生成相对应SQL的方法名
关于SelectProvider使用Mapper接口参数是它的一个重点,写几个小例子
@SelectProvider(type=XXX.class,method="xxx")
XXX selectById(int id)
如果想在SelectProvider方法中获取到Id参数,那么直接在XXX方法里指明参数类型即可。
但是如果你传入多个参数,比如XXX selectById(int id1,int id2,int id3),超过1个参数,你在XXX方法中指明就会报错啦
这个时候需要给XXX方法传入一个参数Map map,那么如何获取id1,id2,id3呢,这里3个参数,你就分别从map里get 3个key分别为param1 param2 param3的value就是对应的id1,id2,id3了,当然 你可以在SelectById中使用注解@Param,为每个参数指定一个别名,那么你就可以在map中获取该别名key所对应的value了
那么如何在XXX方法中使用一些简单的API生成格式化的SQL呢
那么可以从 SQL 这个类入手啦
比如
SQL sql = new SQL(){{
SELECT(XXX);
FROM(XXX);
WHERE(XXX);
ORDER_BY(XXX);
GROUP_BY(XXX);
}};
return sql.toString();
这里就方法格式化好的SQL啦。
溜了溜了~~~