Mybatis框架之map传参

之前写项目的时候就会遇到一次传好多的值,如果封装成一个实体(或者Model)的话还好,但是总会有都不满足的情况,这个时候map传参的话就大大解决了我们这个问题。因为大家都知道map是一对键值对,而且它可以put好多个键。下面我将贴出我写的代码,希望对大家有所帮助。

这里写图片描述

然后在dao访问数据库,执行sql语句

...
import com.wonders.common.entity.dao.JurassicBaseDao;
import com.wonders.usermanager.model.AuthUserModel;

@Component
@SuppressWarnings({"unchecked","rawtypes"})
public class AuthUserDao extends JurassicBaseDao<AuthUserModel, String>{

    @Override
    public Class getEntityClass() {
        return AuthUserModel.class;
    }
    ...
    public void updateAuthUserByMD(HashMap<String, String> param){
        this.getSqlSessionTemplate().update(this.getEntityClass().getName()+".updateAuthUserByMD",param);
    }
    ....
}

在这边要说一下的是,如果不清楚,不好的方法,可以点Ctrl进入父类里看

然后是service(或者manager)里调用方法

@Component
public class AuthUserManager extends JurassicBaseManager<AuthUserModel, String>{

    @Autowired
    private AuthUserDao authUserDao;
    ...
    ...
    /**
     * 根据user的personid 同步账号
     * @param id
     * @param personid
     */
    public void updateAuthUserByMD(String id,String personid){
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("id", id);
        map.put("personid", personid);
        authUserDao.updateAuthUserByMD(map);
    }
    ...
    ...
}

然后就是control里的调用了。相信大家都知道,实名一个实体(或者model),然后service调用方法就可以执行了。

AuthUserModel authuserModel =authUserManager.getById(userid);   
                authUserManager.updateAuthUserByMD(authuserModel.getPersonid(), authuserModel.getPersonid());

这就是Mabatis框架的map传参,简单的看完了,大家也会发现map传参也有局限性,就是如果几个参数的类型不一致,就没法满足,这个问题如果以后可以解决了,将再做补充,如果大家有什么可以解决的方法也可以私信我,谢谢~~希望大家能多交流交流 ~~

上面代码写的有点冗余,下面做了些优化,给大家参考一下:

这里写图片描述

dao里面没修改

Manager也就是service

...
public void updateAuthUserByMD(String personid){
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("personid", personid);
        authUserDao.updateAuthUserByMD(map);
    }
...

Controller

...
@RequestMapping("/sync")
    public ModelAndView sync(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView result = new ModelAndView();
        String userid = request.getParameter("userid");
        try {

            if(StringUtils.isNotBlank(userid) ){
                AuthUserModel authuserModel = authUserManager.getById(userid);
                if (authuserModel != null) {
                    authUserManager.updateAuthUserByMD(authuserModel.getPersonid());
                    result.addObject("msg","succ");
                }
                result.addObject("msg", "账号不存在或查找异常,请联系管理员!");
            }else{
                result.addObject("msg", "账号不存在或查找异常,请联系管理员!");
            }


        }catch (Exception e) {
            result.addObject("msg", e.getMessage());
            e.printStackTrace();
        }
        return result;
    }
...

相信大家也看出来了,一个参数用了两次或多次,可以传那个参数就可以了,不需要对应没次都传一遍。其实这也涉及了#和$的区别~~后继会进行更新处理。

http://blog.csdn.net/z1729734271/article/details/52469013

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值