parameterType(输入类型)
一.简单的数据类型(参数只有一个)
取值可以使用:
- 1.
#{任意变量名}
- 2.
${value}
- 3
.${_parameter}
二.pojo类型
取值可以使用:(用nogl表达式解析pojo对象属性名对应的值)
- 1.
#{pojo对象的属性名}
可以将java类型参数(String)和数据库类型(char,varchar)进行一个数据转换 - 2.
${pojo对象的属性名}
原封不动的将值取出来,必要时还需要加单引号’’,然后与sql语句进行一个拼接
缺点是不能防止sql注入
三.pojo对象的包装类型(重点)
[需要传多个参数]
将User和视图层需要传的其他参数(如id)封装成一个类UserQueryvo(UserQueryViewObject)
下面是使用pojo对象的包装类型代码
①.UserQueryvo
package com.jp.pojo;
public class UserQueryvo {
private User user;
//扩展的字段,这样添加字段不会影响User
private int producteId;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public int getProducteId() {
return producteId;
}
public void setProducteId(int producteId) {
this.producteId = producteId;
}
}
②.UserMapper接口
//根据id修改User对象
List<User> getUserListByUserQueryvo(UserQueryvo vo);
③.UserMapper.xml配置
<!-- 根据id修改User对象 -->
<select id="getUserListByUserQueryvo" parameterType="com.jp.pojo.UserQueryvo" resultType="com.jp.pojo.User">
select id,username,sex,address,birthday from user1
where username like '%${user.name}%';
</select>
④.测试类
@Test
public void tesGetUserListByUserQueryvo(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
UserQueryvo vo=new UserQueryvo();
User user=new User();
user.setName("张");
vo.setUser(user);
vo.setProducteId(1);
List<User> userList = userMapper.getUserListByUserQueryvo(vo);
System.out.println(userList.size());
}