双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

关于mybatis中@SelectProvider的一点疑惑

utf7 utf7 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
需求是这样的。假如有一个User表,表中字段有id,username,gender,email, address.....
现在使用mybatis中的@SelectProvider去实现查询逻辑,查询条件是自定义的Map<String,Object> query,query中放入查询的字段和值,假如我放置id,则根据id查询,假如放置username和id,则根据username和id查询,代码实现如下:

Usermapper代码:
public interface UserMapper {

@SelectProvider(type=UserMapperProvider.class,method="find")
public List<User> find(Map<String,Object> query);
}


UserMapperProvider代码:
import java.util.Map;
class UserMapperProvider{
public static String find(Map<String, Object> query) {
StringBuffer buffer = new StringBuffer();
buffer.append("SELECT * FROM user WHERE 1=1 ");

if(query.get("id")!=null){
buffer.append("AND id = #{id} ");
}
if(query.get("username")!=null){
buffer.append("AND username = #{id} ");
}
if(query.get("gender")!=null){
buffer.append("AND gender = #{gender} ");
}
if(query.get("email")!=null){
buffer.append("AND email = #{email} ");
}
return buffer.toString();
}
}


service层:
@Service("userService")
public class UserServiceImpl{
@Resource
private UserMapper userMapper;

/*
* 根据query条件,查询User
*
*/
public List<User> find(Map<String,Object> query) {
return userMapper.find(query);
}
}

问题是

@SelectProvider(type=UserMapperProvider.class,method="find")
public List<User> find(Map<String,Object> query);
好像有问题,这边的参数是如何传递的呢?当条件是Map<String,Object> query或者List或者自定义的时候,如果实现?
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
utf7
Java EE 67,535 成员 225,843 内容