欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis学习2之解决字段名与实体类属性名不相同的冲突

程序员文章站 2022-07-12 18:10:20
...

      在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>

   运行结果:
MyBatis学习2之解决字段名与实体类属性名不相同的冲突
            
    
    博客分类: mybatis mybatis 

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>

 运行结果:
MyBatis学习2之解决字段名与实体类属性名不相同的冲突
            
    
    博客分类: mybatis mybatis 
 

  • MyBatis学习2之解决字段名与实体类属性名不相同的冲突
            
    
    博客分类: mybatis mybatis 
  • 大小: 6.5 KB
相关标签: mybatis