@Query("select count(1) from User")
public Long totalUser(@Param("sql") String sql);
现在是查询所有用户信息,我现在想根据条件来查询,怎么通过注解表示呢?
以用户为例,用户名为条件
@Query("select u from User u where username like :un") public List<User> findByUsername(@Param("un") String username); List<User> users = userDao.findByUsername("%a");
我现在需要通过roleId来进行查询,类型是Integer,如果正常传入一个Id的话可以查询,如果不要roleId这个条件,查询所有怎么实现呢?
@Garvan: 不管你要不要roleid这个条件,都把roleid这个参数传进来,当你不想要roleid这个条件,传个0或者默认值null,判断一下roleid的值就行啦,roleid为0或者null查询所有,否则条件查询
@博客园乄小光:
比如你上面说的例子:
@Query("select u from User u where roleId like :un") public List<User> findByUsername(@Param("un") Integer roleId);
List<User> users = userDao.findByRoleId("1");
sql语句为:select u from User u where roleId like 1;
但是现在前端没有选择这个查询条件的话,我给它个0或者null
sql语句为:select u from User u where roleId like 0或者null;
就查不出来数据了
@Garvan: 还是没明白我的意思,
如果roleid为0或null:select u from User u
否则:select u from User u where roleId like 1
@博客园乄小光:
那@query("") 里面怎样使用动态的语句啊.
@Garvan: 我在mybatis里面用过,注解没用过,都是配置文件,用逻辑控制也行吧
@博客园乄小光:
mybatis 里面我也知道.. 就是在这上面不知道怎么控制
@Garvan: 做项目都是配置文件,不知道注解怎么控制、、、
@Garvan: 前台传值的时候进行判断值,写两个方法两个sql,判断后访问不同的方法,这样行不行
@博客园乄小光:
注解还是没找到方法,用Specification解决了。还是谢谢你!