时间:2021-05-20
Mybatis不像Hibernate中那么自动化,通过@Column注解或者直接使用实体类的属性名作为数据列名,而是需要自己指定实体类属性和
数据表中列名之间的映射关系,这一点让用惯了Hibernate的人很不习惯,所幸经过探索找到了建立映射关系的三种办法,其中总也有比较 简单的。
首先先定义一个实体类,如下:
public class User implements Serializable { private Integer userId; private String userName; ......}1. 通过XML映射文件中的resultMap
这种方式是最常见的,类似如下:
<mapper namespace="data.UserMapper"> <resultMap type="data.User" id="userResultMap"> <!-- 用id属性来映射主键字段 --> <id property="id" column="user_id"/> <!-- 用result属性来映射非主键字段 --> <result property="userName" column="user_name"/> </resultMap></mapper>通过里面的id标签和result标签来建立映射关系,由property和column分别指定实体类属性和数据表的列名。
2. 通过注解@Results和@Result
这两个注解是与XML文件中的标签相对应的:
@Results对应resultMap
@Result对应result
这两个注解是应用在方法的级别上的,也就是在mapper方法上,如下:
@Select("select * from t_user where user_name = #{userName}")@Results( @Result(property = "userId", column = "user_id"), @Result(property = "userName", column = "user_name"))User getUserByName(@Param("userName") String userName);缺点:
由于注解是针对方法的,对于Mapper中的每个操作数据库的方法都必须有相同的注解完成映射关系的建立,导致很多的配置是重复的;
如果要避免配置重复的问题,可以采用在XML配置文件中配置这个resultMap,然后再@Result中通过id属性引用这个resultMap,
但是这样感觉很麻烦(由于使用了两种配置方式),不如直接使用基于XML的resultMap配置方式;
3. 通过属性配置完成映射
使用者最陌生的是通过配置属性来完成映射,Mybatis给我们提供了一种映射方式,如果属性的命名是遵从驼峰命名法的,数据列名遵从下划线命名,
那么可以使用这种方式,类似如下:
userName对应user_name;
userId对应user_id;
配置代码如下:
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();Configuration configuration = new Configuration();configuration.setMapUnderscoreToCamelCase(true);sqlSessionFactoryBean.setConfiguration(configuration);4. 通过使用在SQL语句中定义别名完成映射
这种方式最直接,直接在SQL语句中建立别名来完成映射,如下:
@Select("select user_name as userName, user_id as userId from t_user where user_name = #{userName}")User getUserByName(@Param("userName") String userName);总结
以上就是本文关于Mybatis中实体类属性与数据列表间映射方法介绍的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Hibernate实现悲观锁和乐观锁代码介绍、Hibernate核心思想与接口简介等。下面介绍本站几款有趣的游戏,学习工作之余放松下心情也是很必要的。也希望大家多多支持网站!
海滨消消乐app for android v1.13 安卓版
https:///game/578587.html
一起来飞车app for android v1.5.1 安卓版
https:///game/578688.html
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文是小编给大家带来的mybatis中实体类和表映射问题的知识,学习本教程能够快速帮助我们解决字段名与实体类属性名不相同的冲突问题,需要的朋友一起看看吧!一、准
前言在我们开发过程中常常有一个需求,就是要知道实体类中Getter方法对应的属性名称(FieldName),例如实体类属性到数据库字段的映射,我们常常是硬编码指
在开发中可能会遇到这样的问题,使用mybatis进行结果集与实体类之间的关系映射时,可能会出现某些属性映射不上去的情况.为了方便排查问题我们需要查看mybati
本文研究的主要是Hibernate组件映射的相关内容,具体如下。组件关联映射的属性是复杂类型的持久化类,但不是实体类,即数据库中没有表与该属性对应,但该类的属性
本文实例讲述了C#编程获取实体类属性名和值的方法。分享给大家供大家参考,具体如下:遍历获得一个实体类的所有属性名,以及该类的所有属性的值//先定义一个类:pub