单个参数:
public List<XXXBean> getXXXBeanList(String xxCode); <select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXXBean"> select * from user where code = #{xxCode} </select>
id对应方法名,parameterType对应参数类型(列如:Integer id—java.lang.Integer,String xxcode—java.lang.String)
resultType对应方法返回值,注意如果是List就对应List的泛型值(列如:List<String>—java.lang.String,List<Object>—Object,Object—自己定义的实体类或者是java的类型)
#{ }对应参数名
多个参数:
public List<XXXBean> getXXXBeanList(String xxId, String xxCode); <select id="getXXXBeanList" resultType="XXXBean"> select * from user where id = #{0} and code = #{1} </select>
这里就不用parameterType,根据参数下标,从零开始,#{ }对应下标
由于版本不同#{0},#{1}会报错,可以换成#{arg0},#{arg1}
多参数传递之注解方式:
public User getUser(@Param("id")int id, @Param("username")String username); <select id="getUser" resultMap="User"> SELECT * FROM User where id=#{id} and username=#{username} </select>
这里就不用parameterType,#{ }对应注解的别名,列如:@Param("userId") int id—#{userId}
Map封装多个参数:
public List<XXXBean> getXXXBeanList(Map params); <select id="getXXXBeanList" parameterType="java.util.HashMap" resultType="XXXBean"> select * from user where id = #{id} and code = #{code} </select>
#{ }对应的就是map的对应参数key
对象参数:
public class User{ private Integer id; private String username; private String code; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } } public List<User> getUserList(User user); <select id="getUserList" parameterType="User" resultType="User"> select * from user where id = #{id} and code = #{code} </select>
#{ }对应的就是对象里成员变量名称,例如 id,username,code
foreach使用:
foreach元素的属性主要有 item,index,collection,open,separator,close。
- item表示集合中每一个元素进行迭代时的别名,
- index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,
- open表示该语句以什么开始,
- separator表示在每次进行迭代之间以什么符号作为分隔符,
- close表示以什么结束。
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
- 如果传入的是单参数且参数类型是一个List/Set的时候,collection属性值为list/set
- 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
- 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,collection的属性值为map的key值
- 如果传入的是对象,collection的属性值为对象里成员变量名称
<foreach collection="XXX" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> //如果循环是个对象集合,要获取对象的成员变量值,要用 item.成员变量名称 <foreach collection="XXX" item="item" index="index" separator=","> ( #{item.orderId}, #{item.name}, #{item.birthday}, #{item.sex}, #{item.maritalStatus}, #{item.phone}, #{item.email}, #{item.passport}, #{item.passportDueDate}, #{item.firstName}, #{item.lastName}, #{item.englistName}, #{item.detailInfo} ) </foreach>
总结:
以上是常用总结,如果遇见不同情况的,可以留言与我分享,谢谢。