渐渐老去 2017-10-22
在mybatis学习第一篇博客中,虽然有查询结果,但是查出的属性与表中属性不对应,这种情况相信大家在使用jstl、stuts标签时也遇到过类似情况,如果把t_group表中group_name属性修改为groupName时,结果此属性能正确查询出来。但是这样修改直接动了表的结构,不建议采纳。
以下有两种方法:
1、通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。
修改sql映射文件GroupMapper.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.zlt.mybatis.model.Group"> <!-- group_name属性查出来为null --> <!-- <select id="selectGroupByID" parameterType="int" resultType="Group" > select t.id,t.group_name,t.description from t_group t where t.id = #{id} </select> --> <!-- 能正确查询出group_name属性 --> <select id="selectGroupByID" parameterType="int" resultType="Group" > select t.id id,t.group_name groupName,t.description description from t_group t where t.id = #{id} </select> </mapper>
运行结果:
2、通过<resultMap>来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的。
<?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.zlt.mybatis.model.Group"> <!-- group_name属性查出来为null --> <!-- <select id="selectGroupByID" parameterType="int" resultType="Group" > select t.id,t.group_name,t.description from t_group t where t.id = #{id} </select> --> <!-- 能正确查询出group_name属性 --> <!-- <select id="selectGroupByID" parameterType="int" resultType="Group" > select t.id id,t.group_name groupName,t.description description from t_group t where t.id = #{id} </select> --> <!-- 使用resultMap能正确查询出group_name属性 --> <select id="selectGroupByID" parameterType="int" resultMap="groupResultMap" > select t.id id,t.group_name groupName,t.description description from t_group t where t.id = #{id} </select> <!--通过<resultMap>映射实体类属性名和表的字段名对应关系 --> <resultMap type="com.zlt.mybatis.model.Group" id="groupResultMap"> <!-- 用id属性来映射主键字段 --> <id property="id" column="id" /> <!-- 用result属性来映射非主键字段 --> <result property="groupName" column="group_name"/> <result property="description" column="description" /> </resultMap> </mapper>
运行结果: