parameterType:输入映射
类型:
- 简单类型
- pojo类型:如果parameterType为pojo类型,那sql语句中 #{值} 中,名字必须与数据库表中一致
- pojo包装类类型
包装类
public class QueryVo implements Serializable {
//实现序列化,反序列
private static final long serialVersionUID = 1l;
private User user;
user的get/set或者是构造方法
映射文件
<select id="findbynamevo" parameterType="queryvo" resultType="User">
包装类注入对像.属性名
select * from USER where username like "%"#{user.username}"%";
</select>
测试类
String resource = "SqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
usermapper mapper = sqlSession.getMapper(usermapper.class);
QueryVo vo = new QueryVo();
先设置user属性的值
User user = new User();
user.setUsername("五");
再注入包装类
vo.setUser(user);
List<User> userList = mapper.findbynamevo(vo);
System.out.println(userList);
System.out.println(user);
resultType:输出映射(自动)
- 简单类型
- pojo类型
- pojo列表(还是pojo类型)
resultMap:输出映射(手动)
- 可以将pojo类中属性名与数据库表中属性名不一致调整输出
<resultMap type="order" id="orderResultMap">
<!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
property:主键在pojo中的属性名
column:主键在数据库中的列名
<id property="id" column="id" />
<!-- 定义普通属性 -->
<result property="userId" column="user_id" />
<result property="number" column="number" />
<result property="createtime" column="createtime" />
<result property="note" column="note" />
</resultMap>
<!-- 查询所有的订单数据 -->
<select id="queryOrderAll" resultMap="orderResultMap">
SELECT id, user_id,
number,
createtime, note FROM `order`
</select>
- 可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。