Mybatis_day02

版权声明: 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);

    }

猜你喜欢

转载自blog.csdn.net/linmengmeng_1314/article/details/80756395