在做项目时用mybaits遇到传多个参数的问题,经过我上网查一些资料结合项目实现记录下,这个很简单的方法!
例:通过一个数组id 查询出所有跟id相关的信息
AppXgXsXsxxExtendDao.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.com.gzqixun.apps.xg.dao.xsxsxx.AppXgXsXsxxExtendDao">
<sql id="AppXsxjExport”>
a.id As "id",
a.xh As "xh",
a.xm As "xm"
</sql>
<select id="findAppXgXsXsxjList" resultType="cn.com.gzqixun.apps.xg.entity.xsxsxx.AppXgXsXsxj">
select
<include refid="AppXsxjExport">
from app_xg_xs_xsxx a
<where> <!--如果mybaits 用了 where 标签 就相当于sql语句加了where条件-->
a.id in
<foreach item="id" collection="ids" separator="," open="(" close=")"> <!---foreach 相当于循环->
#{id}
</foreach>
</where>
</select>
</mapper>
AppXgXsXsxxExtendDao
package cn.com.gzqixun.apps.xg.dao.xsxsxx;
@MyBatisMapper
public interface AppXgXsXsxxExtendDao{
List<AppXgXsXsxj> findAppXgXsXsxjList(Map<String,Object>map);
}
AppXgXsXsxxExtendService
package cn.com.gzqixun.apps.xg.service.xsxsxx;
@Service
@Transactional(readOnly = true)
public class AppXgXsXsxxExtendService{
@Autowired
private AppXgXsXsxxExtendDao appXgXsXsxxExtendDao;
public List<AppXgXsXsxj> exportXjxx(String ids[]) {
Map<String, Object> map = new HashMap<>();
map.put("ids", ids);
return this.appXgXsXsxxExtendDao.findAppXgXsXsxjList(map);
}
}
这就是通过Map传多个参数过来,可以不用加<foreach> 这是业务需求