版权声明: https://blog.csdn.net/linmengmeng_1314/article/details/80756395
1.本篇总结:
1、输入映射和输出映射
a) 输入参数映射
b) 返回值映射2、动态sql
a) If
b) Where
c) Foreach
d) Sql片段3、关联查询
a) 一对一关联
b) 一对多关联4、Mybatis整合spring
2 输入映射和输出映射
Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。
2.1 parameterType(输入类型)
2.1.1 传递简单类型
参考第一天内容。
- 2.1.2 传递pojo对象
Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。
2.1.3 传递pojo包装对象
开发中通过pojo传递查询条件 ,查询条件是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。
Pojo类中包含pojo。
需求:根据用户名查询用户信息,查询条件放到QueryVo的user属性中。2.1.3.1 QueryVo.java
package cn.itheima.pojo;
import java.util.List;
public class QueryVo {
private User user;
// 利用foreach,传递多个用户id
private List<Integer> ids;
public List<Integer> getIds() {
return ids;
}
public void setIds(List<Integer> ids) {
this.ids = ids;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
- 2.1.3.2 Sql语句
SELECT * FROM user where username like ‘%刘%’
- 2.1.3.3 Mapper文件
<select id="findUserByVo" parameterType="cn.itheima.pojo.QueryVo"
resultType="cn.itheima.pojo.User">
select * from user where username like '%${user.username}%'
and sex =#{user.sex}
</select>
- 2.1.3.4 接口UserMapper.java
public List<User> findUserByVo(QueryVo vo);
- 2.1.3.5 测试方法
@Test
public void testfindUserByVo() throws Exception {
SqlSession openSession = factory.openSession();
// 通过getMapper来实例化接口
UserMapper mapper = openSession.getMapper(UserMapper.class);
QueryVo vo = new QueryVo();
User user = new User();
user.setUsername("八");
user.setSex("1");
vo.setUser(user);
List<User> list = mapper.findUserByVo(vo);
System.out.println(list);
}