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

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

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

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


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

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

本章内容正式讲解:
我们来看一下我们的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,这是要将两者对应起来,然后
在<resultMap>标签下我们<id>标签是写主键的,<result>标签写其他的
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值