【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

【MyBatis】——解决字段名与实体类属性名不相同的冲突

原创 2016年06月14日 14:38:04

            在mybatis中进行查询时,查询出的结果需要用resultType配置一个输出类型,可以使简单类型或者pojo对象,如果是稍微复杂一些的可以中包装类型封装还可以使用自定义的包装类型,包装类也是一种pojo对象。但是当遇到表中的字段名和表对应实体类的属性名不完全相同的情况时,改如何解决字段名与实体类属性名不相同的冲突问题呢?还有一种输出映射是resultMap

 

            比如说遇到如下的sql语句:

SELECT id id_,username username_ FROM USER WHERE id=#{value}


使用ResultMap

定义resultMap

<!-- 定义resultMap 
	将SELECT id id_,username username_ FROM USER和user类中的属性作一个映射关系
	type:resultMap最终映射的java对象类型,可以使用别名
	id:对resultMap的唯一标识-->
<resultMap type="user" id="userResultMap">
	<!-- id表示查询结果集中唯一标识
		column:查询出来的列名
		property:type指定的pojo类型中的属性名-->
	<id column="id_" property="id"/>
	<!--result:对普通映射定义
		column:查询出来的列名
		property:type指定的pojo类型中的属性名
		最终resultMap对column和property作一个映射关系(对应关系)-->
	<result column="username_" property="username"/>
</resultMap>

使用resultMap作为statement的输出映射类型

<!-- 使用resultMap进行输出映射 
		resultMap:指定定义的resultMap的id,如果这个resultMap在其它的mapper文件,前边需要加namespace-->
	<select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">
		SELECT id id_,username username_ FROM USER WHERE id=#{value}
	</select>

 mapper接口

//根据id查询用户信息,使用resultMap输出
public User findUserByIdResultMap(int id) throws Exception;

测试

@Test
public void testFindUserByIdResultMap() throws Exception{
	SqlSession sqlSession=sqlSessionFactory.openSession();

	//创建UserMapper对象,mybatis自动生成mapper代理对象
	UserMapper userMapper= sqlSession.getMapper(UserMapper.class);
	
	//调用userMapper的方法
	User user=userMapper.findUserByIdResultMap(1);
	 
	System.out.println(user);
}

总结

            上面的测试代码演示当尸体类中的属性名和表中的字段名不一致时,使用mybatis进行查询操作时无法查询出相应的结果以及针对问题采用的两种方法:

            方法一:通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以把表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。

            方法二:通过<resultMap>来映射字段名和实体类属性名的一一对应关系。这种方式是使用mybatis提供的解决方式来解决字段名和属性名的映射关系的。

 

            使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

mybatis学习笔记(二) 多pojo,复杂映射

现在在数据库增加两张表blog与comment ,即博客与评论表。 CREATE TABLE `blog` ( `id` int(11) NOT NULL default '0', `titl...

ssm中mybatis处理数据库(mysql)与pojo属性中类型不一致(string转date)

一般在表设计的时候会考虑到数据库字段类型和java中属性一致的问题,但是也有可能会出现一些情况导致类型不一致的问题,比如:二次开发中需求更改等。此时数据库和java中的代码不能随便更改,所以考虑的思路...

pojo类的属性与数据库表字段名一样时,java通过反射拼凑出相应的sql.

转自csdn http://topic.csdn.net/u/20081102/09/2d46728d-fc23-47bc-b6da-e4638eb0d298.html备忘:package hl.gh...

MyBatis Generator自动创建SSM框架mapping pojo dao包下的代码详解

最近用到了比较流行SSM开源框架,标准的MVC设计模式,最大的 优点就是MyBatis属于一种半自动的ORM框架,所以需要用到MyBatis自动生成代码的功能。主要是配置Mapping映射文件,但是由...

hibernate:映射文件的属性名必须和pojo类的属性名以及数据库字段名一一对应

如果不一致的话将产生如下错误:

POJO类与数据库表的映射文件的编写

######.hbm.xml配置信息              This class contains the employee detail.                         ...

ssm java编程遇到从数据库中查询的时间与存储时间不一致

ssm java编程遇到从数据库中查询的时间与存储时间不一致推荐先去看这篇文章: java编程中遇到的时区与时间问题总结 http://blog.csdn.net/yeahwell/article/d...

转:BeetlSQL自定义NameConversion去除Pojo和表前缀

有的时候我们数据库设计可能不会完全和代码语言一致,比如我们会在数据库的每一张表前面加上一个特定的前缀用于区分,在BeetlSQL中将代码Pojo的名称和数据库Table名称对应起来是使用NameCon...

Oracle数据库建表 Oracle数据库的统一命名与编码规范

本文转载自:http://chinaxxren.iteye.com/blog/889590 如有疑问请咨询原博主,谢谢!! 写在前边:规范是一种习惯,在Oracle数据库中笔者认为表中的字段命名规范需...

ssm框架下对数据库表的增查删改

在ssm框架下对数据库表单的增查删改操作(分页查询) 配置ssm整合——创建java实体类——创建服务方法service接口——创建方法与参数的映射关系Mapper接口——创建实体类方法实现类Imp...
  • lcplyp
  • lcplyp
  • 2016-07-08 17:25
  • 4407
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)