大纲摘要:
1、输入映射和输出映射
a) 输入参数映射
b) 返回值映射
2、动态sql
a) If
b) Where
c) Foreach
d) Sql片段
3、关联查询
a) 一对一关联
b) 一对多关联
4、Mybatis整合spring
一、输入映射和输出映射
1.输入映射
也就是day01提到的入参
传递简单类型:见day01,这里不再赘述
传递POJO包装类型:
开发中通过pojo传递查询条件 ,查询条件是综合的查询条件,
不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件),
这时可以使用包装对象传递输入参数。即Pojo类中包含pojo。
创建POJO包装类QueryVo:
package cn.pojo; /** * view object 视图层对象,用来做一些查询等,拓展性较好 * @author jiangbei01 * */ public class QueryVo { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
mapper文件入参设置SQL:
<!-- 测试入参的SQL --> <select id="findUserByVo" parameterType="cn.pojo.QueryVo" resultType="cn.pojo.User"> SELECT * FROM user where username like ‘%${user.username}%‘ AND sex=#{user.sex} </select>
接口中增加查询方法
public interface UserMapper { User findById(Integer id); //返回值是list集合时,mybatis会自动调用selectList()方法 List<User> findByName(String username); void insertUser(User user); List<User> findUserByVo(QueryVo vo); }
测试函数:
@Test public void findUserByVo() throws Exception{ SqlSession session = factory.openSession(); //通过getMapper()方法实例化实现类 UserMapper mapper = session.getMapper(UserMapper.class); //创建vo对象 QueryVo vo = new QueryVo(); //创建vo的属性user User user = new User(); user.setUsername("宋江"); user.setSex("2"); user.setBirthday(new Date()); user.setAddress("北京"); vo.setUser(user); List<User> list = mapper.findUserByVo(vo); System.out.println(list); }
时间: 2024-10-17 15:07:16