【MyBatis】解析MyBatis传入参数的问题

一、单个参数:

public List<XXBean> getXXBeanList(String xxCode);  

<select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean">

  select t.* from tableName t where t.id= #{id}  

</select>  

其中方法名和ID一致,#{}中的参数名与方法中的参数名一直, 我这里采用的是XXXBean是采用的短名字,

select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。

二、多参数:

public List<XXXBean> getXXXBeanList(String xxId, String xxCode);  

<select id="getXXXBeanList" resultType="XXBean">

  select t.* from tableName where id = #{0} and name = #{1}  

</select>  

由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始

三、Map封装多参数:

public List<XXXBean> getXXXBeanList(HashMap map);  

<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">

  select 字段... from XXX where id=#{xxId} code = #{xxCode}  

</select>  

其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。 

 四、List封装in:

public List<XXXBean> getXXXBeanList(List<String> list);  

<select id="getXXXBeanList" resultType="XXBean">
  select 字段... from XXX where id in
  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
    #{item}
  </foreach>
</select>  

foreach 最后的效果是select 字段... from XXX where id in (‘1‘,‘2‘,‘3‘,‘4‘) 

五、多参数传递之注解方式示:

例子:

public AddrInfo getAddrInfo(@Param("corpId")int corpId, @Param("addrId")int addrId);

xml配置这样写:

<select id="getAddrInfo"  resultMap="com.xxx.xxx.AddrInfo">
       SELECT * FROM addr__info     where addr_id=#{addrId} and corp_id=#{corpId}
</select>

以前在<select>语句中要带parameterType的,现在可以不要这样写。

六、selectList()只能传递一个参数,但实际所需参数既要包含String类型,又要包含List类型时的处理方法:

将参数放入Map,再取出Map中的List遍历。如下:

List<String> list_3 = new ArrayList<String>();Map<String, Object> map2 = new HashMap<String, Object>();
list.add("1");
list.add("2");
map2.put("list", list); //网址id

map2.put("siteTag", "0");//网址类型

public List<SysWeb> getSysInfo(Map<String, Object> map2) {
  return getSqlSession().selectList("sysweb.getSysInfo", map2);
}

<select id="getSysInfo" parameterType="java.util.Map" resultType="SysWeb">
  select t.sysSiteId, t.siteName, t1.mzNum as siteTagNum, t1.mzName as siteTag, t.url, t.iconPath
   from TD_WEB_SYSSITE t
   left join TD_MZ_MZDY t1 on t1.mzNum = t.siteTag and t1.mzType = 10
   WHERE t.siteTag = #{siteTag }
   and t.sysSiteId not in
   <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
       #{item}
   </foreach>
 </select>

原文连接:MyBatis插入多个参数的问题

时间: 2024-10-04 10:20:37

【MyBatis】解析MyBatis传入参数的问题的相关文章

mybatis sql in 查询(mybatis sql语句传入参数是list)mybatis中使用in查询时in怎么接收值

1.in查询条件是list时 <select id="getMultiMomentsCommentsCounts" resultType="int"> select moment_comment_count from tbl_moment_commentCount where mid in <foreach item="item" index="index" collection="list&quo

三、MyBatis系列:Mapper 映射 之 使用POJO实体来接收数据和传入参数

1.首先定义一个接收数据的实体 User 类型,还有一个输入参数的 UserQuery 类型. 1 public class User { 2 public int id; 3 public String username; 4 public Date birthday; 5 public String sex; 6 public String address; 7 } 8 public class UserQuery { 9 private String orderByClause; 10 p

Mybatis传入参数为map

Mapper: List<AdPayConfigEntity> selectByAdType(@Param("status") Integer... status); XML:<select id="selectByAdType" parameterType="map" resultMap="BaseResultMap"> SELECT * from sky_ad_pay_config WHERE ad

MyBatis传入参数为集合 list 数组 map写法

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性

MyBatis传入参数为集合、数组SQL写法

参考:http://blog.csdn.net/small____fish/article/details/8029030 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach标签的属性主要有item,index,collection,open,separator,close. item 表示集合中每一个元素进行迭代时的别名,随便起的变量名: index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置,不常用: open 表示该语句以什么开始,常用"

mybatis传入参数类型parameterType和输出结果类型resultType详解

前言 Mybatis的Mapper文件中的select.insert.update.delete元素中都有一个parameterType和resultType属性,parameterType属性用于对应的mapper接口方法接受的参数类型,resultType用于指定sql输出的结果类型. resultType:指定sql输出结果类型,总共就两种: 1. 基本数据类型. 2. pojo类类型.mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象.如果有多条数据,则

mybatis 动态sql和参数

mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对Java对象图进行导航. OGNL表达式的基本单位是"导航链",一般导航链由如下几个部分组成: 属性名称(property) 方法调用(method invoke) 数组元素 所有的OGNL表达式都基于当前对象的上下文来完成求值运算,链的前面部分的结果将

MyBatis查询传一个参数时报错:There is no getter for property named &#39;sleevetype&#39; in &#39;class java.lang.Integer

用MyBatis进行查询,传入参数只有一个时(非Map)如int,报错 There is no getter for property named 'sleevetype' in 'class java.lang.Integer 原因在于测试条件写法有误, <if test="sleevetype==0"><!-- 专属 --> exclusive=1 </if> <if test="sleevetype!=0">&l

Mybatis(4) 映射文件-参数处理

参数处理: 单参数处理: mybatis 不会做任何特殊处理. #{key} : key 可以写任何字段取出参数值. 测试方法: mapper接口: mapper.xml: 控制台: 多参数处理: mybatis会做特殊处理, 将多个参数封装成一个map. #{key} 的 key 为 param1……paramN, 或者参数索引. #{key} 的 value 为传入的参数的真实值.  测试方法: mapper接口: mapper.xml:  控制台:  绑定异常, id, name 参数没有