自定義sql也想使用Wrapper建構?那這時候就要如下使用,先看定義好的部分常量:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iNzczN1kTY3cTZwIDMyMjNzYzXyUzN1kDMzAzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
這裡隻挑三個說明一下:
ew.customSqlSegment 對應條件構造器裡的條件
ew.sqlSet update是所設定的列
ew.sqlSelect query時所選的列
@Select("SELECT u.* FROM USER u LEFT JOIN `role-user` ru ON u.id=ru.user_id LEFT JOIN role r ON r.id=ru.role_id ${ew.customSqlSegment}")
List<User> findFreash(@Param(Constants.WRAPPER)Wrapper wrapper);
@Select("select ${ew.sqlSelect} from user ${ew.customSqlSegment} ")
List<User> testSqlSelect(@Param(Constants.WRAPPER)Wrapper wrapper);
@Update("update `role-user` set ${ew.sqlSet} ${ew.customSqlSegment}")
int testSqlSet(@Param(Constants.WRAPPER)Wrapper wrapper);
主要是多對多的一個簡單的角色表對應模型,相應的使用例子
userDao.findFreash(Wrappers.query().gt("u.age",19).eq("r.id",1)).forEach(System.out::println);
userDao.testSqlSelect(Wrappers.query().select("name","age").like("email","qq")).forEach(System.out::println);
userDao.testSqlSet(Wrappers.update().set("set role_id ",2).eq("user_id",1));
select u.* from user u left join `role-user` ru on u.id=ru.user_id left join role r on r.id=ru.role_id where u.age > ? and r.id = ?
select name,age from user where email like ?
update `role-user` set role_id =? where user_id = ?
@Select("SELECT * FROM USER u LEFT JOIN `role-user` ru ON u.id=ru.user_id LEFT JOIN role r ON r.id=ru.role_id ${ew.customSqlSegment}")
List<Map<String,Object>> findAll(@Param(Constants.WRAPPER)Wrapper wrapper);
@Select("SELECT * FROM USER u LEFT JOIN `role-user` ru ON u.id=ru.user_id LEFT JOIN role r ON r.id=ru.role_id ${ew.customSqlSegment}")
List<Map<String,Object>> findWithPage(IPage page,@Param(Constants.WRAPPER)Wrapper wrapper);