输入映射
parameterType
常规 pojo类 pojo的封装类
将mapper中的所有方法中的参数提取出来放到一个包装类中,开发mapper的时候所有的参数如果有就传这个包装类类型。
在包装类中,加上对应的参数类型。在mapper.xml中使用Ognl的方式去读取参数。
package cn.hd.param;
import cn.hd.pojo.User;
public class QueryVo {
private User user;
private Integer id;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
<select id="findUserByNameAndSex" parameterType="cn.hd.param.QueryVo"
resultType="cn.hd.pojo.User">
SELECT * FROM t_user WHEREname=#{user,id} AND sex={user,id}
</select>
public interface UserMapper {
User findUserById(QueryVo queryVo);
Integer add(QueryVo queryVo);
List<User>findUserByNameAndSex(QueryVo queryVo);
}
@Test
public void fun1() throws IOException {
InputStream in = Resources.getResourceAsStream("cn/hd/param/sqlMapConfig.xml");
SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession =sessionFactory.openSession();
UserMapper mapper =sqlSession.getMapper(UserMapper.class);
QueryVo queryVo = new QueryVo();
List<User> user =mapper.findUserByNameAndSex(queryVo);
System.out.println(user);
sqlSession.close();
}
}
输出映射
两种方式
1. resultType
如果数据库中的字段和实体类中保持一致,使用该属性。
你想要的数据在实体类和数据库中保持一致。
2. resultMap
你想要的数据在实体类和数据库中的字段不一致的时候,又想拿到这个值,就要自己手动映射。
Sql语句中resultMap中的参数和上面的resultMap中的id保持一致。Type就是要转化的类型。 id主键 result普通主键
Column数据库字段名 property实体类的属性名 JavaType实体类类型 jdbcType数据库类型 TypeHandler类型控制器
<resultMap id="newUsers" type="cn.hd.pojo.newUser">
<id column="id" property="userId"></id>
<result column="name" property="name"></result>
</resultMap>
<select id="find" resultMap="newUsers">
SELECT * FROM t_user
</select>