MyBatis知识点复习-07resultType与resultMap讲解

MyBatis知识点复习-07resultType与resultMap讲解

上一篇:MyBatis知识点复习-06parameter传入包装类查询条件与map的讲解

下一篇:MyBatis知识点复习-08动态SQL
在前面章节中我们已经使用过了resultType,相信你已经和熟练了,但是他其实存在一个弊端,而这个弊端可以用resultMap来解决,那么具体是什么呢?下面的学习将为您讲解!

文章目录

    • MyBatis知识点复习-07resultType与resultMap讲解

在正式讲解前我们做个resultType的返回类型的总结:

简单类型:double,long,int,String等
POJO单个对象,比如前面文章的User
POJO列表:比如前面文章用的List

本章内容正式讲解:
我们来看一下我们的User类(是一个javaBean类)的属性内容:

	private int id;
	private String username;// 用户姓名
	private String sex;// 性别
	private Date birthday;// 生日
	private String address;// 地址

再来看一下我们的user表的字段名字:
在这里插入图片描述
会发现他们对应的名字是一模一样的,但是如果我的user表里面的username不叫username而是叫name,那么这个时候如果你还在用resultType就会返回空(当然这里你大可在sql语句去修改来修正,比如select id,name username , birthday,sex,address from user但这不是通用的好方法),这个时候我们的解决办法是使用resultMap
下面我来为大家演示:
先把user表的username属性名字改为name
在这里插入图片描述
在UserMapper接口里面添加下面这个方法

public List<User> findUsersByResultMap(User user);

接下来我们需要手动的将对应的名字映射起来,在mapper/UserMapper.xml的mapper标签下面添加下面内容:

    <resultMap id="abcdef" type="user">
        <id property="id" column="id"></id>
        <result property="username" column="name"></result>
    </resultMap>

在mapper/UserMapper.xml文件里面添加下面内容:

    <select id="findUsersByResultMap" resultMap="abcedef" parameterType="user">
        select * from user where name = #{
     username} and sex = #{
     sex}
    </select>

那么上面添加的两段内容中,第一个的id与第二个的resultMap为abcdef,这是要将两者对应起来,然后
标签下我们标签是写主键的,标签写其他的
Test方法内容如下:

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = new User();
        user.setSex("1");
        user.setUsername("张三丰");
        List<User> usersByResultMap = mapper.findUsersByResultMap(user);
        System.out.println(usersByResultMap);
        sqlSession.commit();//提交事务,否则会事务回滚

结果:
在这里插入图片描述
上一篇:MyBatis知识点复习-06parameter传入包装类查询条件与map的讲解
下一篇:MyBatis知识点复习-08动态SQL

你可能感兴趣的:(#,Mybatis)