MyBatis输出结果封装竟如此简单
1.前言
有时候我们会发现,实体类中的属性和数据库表的列名不一致了,这个时候我们还是按照之气前的模式写,会发现访问不到数据库中的数据了,这个时候我们就需要将输出结果进行封装了。
之前我们都是用resultType配置结果类型,可以是基本类型也可以是实体类型。
今天我要介绍的是resultMap结结果类型。它可以实现查询的列名和实体类属性名不一致时建立对应关系,从而实现封装。你以为它就这个功能吗?它的功能远不止如此,还可以实现查询结果映射为复杂类型的pojo,可以将多表联系起来,这个是没有设置外键的,使用外键的话,会大大降低查询效率,这个刚好解决了这个。
2.举个例子
-
domain下
@Data @AllArgsConstructor @NoArgsConstructor @Getter @Setter public class User implements Serializable { private Integer user_id; private String user_username; private Integer user_age; }
这里数据库中是id,username,age,可以看到实体类中字段对应不一样
-
mapper下
public interface UserMapper { //查询所有 List<User> findAll(); }
-
UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.wang.mapper.UserMapper"> <select id="findAll" resultMap="findUser"> select * from user </select> <resultMap id="findUser" type="com.wang.domain.User"> <id column="id" property="user_id"></id> <result column="username" property="user_username"></result> <result column="age" property="user_age"></result> </resultMap> </mapper>
- id属性:给定唯一标识,查询的select标签引用正是通过这个
- type属性:指定实体类的全限定类名
- id标签:用于主键字段
- result标签:用于非主键字段
- column属性:用于指定数据库的字段名
- property属性:用于指定实体类中的属性名称
3.总结
通过上面的一个小小的demo,是不是感觉这个竟如此简单,这个在开发中用的极其多。除了在xml文件中配置,那么还有注解版的使用方法,关注我,让你学习更多新知识,下次更新注解版如何实现结果集的封装。