@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注解来做关联