MyBatis基于注解实现复杂的多条件SQL语句查询
程序员文章站
2024-03-02 08:01:28
...
@Component
public interface UserMapper extends Mapper<User>, MySqlMapper<User> {
@SelectProvider(type = DynamicDataDaoProvider.class, method = "selectUserByid")
List<User> selectUserByidIn(@Param("list") List<Integer> list);
@SelectProvider(type = DynamicDataDaoProvider.class, method = "getCity")
List<User> getCity(@Param("id") Integer id, @Param("email") String email);
class DynamicDataDaoProvider{
public String getCity(@Param("id") Integer id, @Param("email") String email){
return new SQL(){{
SELECT(" * ");
FROM("orm_user");
if(id != null) WHERE("id = #{id}");
if(email != null) {
OR(); WHERE("email = #{email}");
}
}}.toString();
}
public String selectUserByid(@Param("list") List<Integer> list){
StringBuffer sql = new StringBuffer("select * from orm_user u where u.id in (");
for(int i : list){
sql.append(i + ", ");
}
sql.delete(sql.length()-2, sql.length());
sql.append(")");
return sql.toString();
}
}
}
注意: 参数之间要用@Param注解来做关联
上一篇: java 中 MD5加密的实例
下一篇: java实现微信支付结果通知