1.传递包装类
User类
public class User {
private int id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址
//set/get方法省略
}
User包装类
public class UserQueryVo {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
UserMapper接口
public interface UserMapper {
User findUserByName(UserQueryVo uv);
}
UserMapper.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="com.test.mapper.UserMapper">
//${}和#{}中的参数名需要和包装类中的对象层级一致,并且属性名要一致
<select id="findUserByName" parameterType="com.test.domain.UserQueryVo" resultType="com.test.domain.User">
SELECT * FROM USER WHERE username like '%${user.username}%' AND sex = #{user.sex}
</select>
</mapper>
测试代码
@Test
public void test_04(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
UserQueryVo uv = new UserQueryVo();
User user = new User();
user.setUsername("五");
user.setSex("2");
uv.setUser(user);
User user2 = userMapper.findUserByName(uv);
System.out.println(user2);
}
2.传递HashMap
同传递POJO对象一样,map的key相当于pojo的属性。
UserMapper接口
public interface UserMapper {
List<User> findUserByHashMap(Map<String, Object> map);
}
UserMapper.xml
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.UserMapper">
<select id="findUserByHashMap" parameterType="hashmap" resultType="com.test.domain.User">
SELECT * FROM USER WHERE username like '%${username}%' AND sex = #{sex}
</select>
</mapper>
测试代码
@Test
public void test_05(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", "小");
map.put("sex", "1");
List<User> user2 = userMapper.findUserByHashMap(map);
System.out.println(user2);
}