假如我们使用Dao+映射文件的方式操作数据表时,实体类的属性名与数据库列名不一致时我们该怎么查询数据。
实体类的属性名与数据库列名不一致时查询全部数据:
执行结果为:
我们发现只有money一个属性有值,其余属性均为默认值
这种情况下,如果想要查询数据,则需要修改映射文件
第一步,在映射文件下面加入resultMap标签:
<!-- 实体类属性与数据库的列的对应关系 -->
<resultMap type="com.xyj.entity.Emp" id="empmap">
<!--column代表数据库中的列名 property代表实体类的属性 javaType代表在java中的数据类型 jdbcType代表在数据库中的数据类型 -->
<id column="eid" property="id"/>
<result column="ename" property="name"/>
<result column="epwd" property="pwd"/>
<result column="money" property="money"/>
</resultMap>
第二步,修改查询标签的resultType属性为resultMap,resultMap的值为定义的resultMap标签的id值
<select id="select" resultMap="empmap">
再次查询全部数据时我们发现数据已经全部匹配啦。
全部代码
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- MyBatis配置文件 -->
<configuration>
<!-- 配置log4j日志文件 -->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- 配置mybatis的多套运行环境 development为开发者模式 -->
<environments default="development">
<environment id="development">
<!--事务管理器 使用JDBC事务管理-->
<transactionManager type="JDBC"></transactionManager>
<!--dataSource 数据源配置 POOLED:MyBatis自带数据源 JNDI:基于tomcat的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///jdbcdemo20190804"/>