当前位置:首页 > Java技术 > Java实体类与数据库表映射关系

Java实体类与数据库表映射关系

2022年11月09日 13:09:43Java技术12

在代码编写过程中,避免不了与数据库打交道,而这最基本的就是如何把数据映射为实体类,下面介绍几种比较常用的映射方式。
一:xml文件编写映射规则

<!-- 通用查询映射结果 -->
<resultMap id="myMap" type="com.**.**.entity.User">
        <id column="id" property="id" />
        <result column="user_name" property="userName" />
        <result column="user_password" property="userPassword" />
        <result column="email" property="email" />
        <result column="user_age" property="userAge" />
        <result column="is_del" property="isDel" />
</resultMap>

<!-- 查询语句 -->
<select id="selectById" resultMap="myMap">
    select * from user where id = #{id}
</select>

这种映射形式一个resulMap绑定一个实体类,但是越往后开发,返回的数据这一个实体类不能满足的情况下,需要新建很多这种映射,这种形式显然不是很好的选择。

二:sql的 * 改编写成 A as B的形式

<select id="selectById" resultType="com.**.**.entity.User">
    select 
    a.id as id,
    a.user_name userName,
    a.user_password as userPassword,
    a.email as email,
    a.user_age as userAge,
    a.is_del as isDel 
    from user a 
    where a.id = #{id}
</select>

这种写法无需任何配置,而且按需获取,且映射关系一目了然。缺点是代码编写量大。

三:mybatis框架或mybatis-plus自带的驼峰命名法映射规则

这里先讲mybatis框架的,作为现在最常用的最多人使用的持久层框架,mybatis自带的驼峰名发法更是简便了开发过程。首先需要开启这项命名规则,最常用的方式是通过配置文件修改配置参数。

<?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">

<configuration>
    <properties>
        <property name="dialect" value="mysql"/>
    </properties>
    <!-- 全局参数 -->
    <settings>
        <!-- 使用驼峰命名法转换字段。 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

开启后,实体类的属性命名就要按照驼峰命名法的规则命名,如表字段为user_name,则对应的实体类属性名应为userName,必须要严格按照这种规则编写,否则返回的数据不会对该属性赋值。

mybatis-plus作为mybatis的增强工具,只强不弱,对命名规则的也是如此。如果我们像上面一样通过配置文件开启了驼峰命名法的映射规则,那使用mybatis-plus封装的方法时不需要做任何操作,也可以达到自己编写sql语句的效果。但如果没有开启,我们只需要在实体类的属性上添加@TableField注解,指定映射关系即可。需要注意的是这里的注解方式只适用mybatis-plus封装的方法上,如果自己编写的sql语句是不会生效的。

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
     
    @TableId(type = IdType.UUID)
    private String id;

    @TableField(value = "user_name")
    private String userName;

    @TableField(value = "user_password")
    private String userPassword;

    private String email;

    @TableField(value = "user_age")
    private Integer userAge;

    @TableLogic
    @TableField(value = "is_del")
    private Integer isDel;
}

作者:众星揽月
来源链接:https://blog.csdn.net/qq_45735918/article/details/116227370

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68917.html

分享给朋友:

“Java实体类与数据库表映射关系” 的相关文章

一分钟搞定Java环境变量配置

一分钟搞定Java环境变量配置

对于学Java的人来说,成功配置环境变量是第一步,因为后期不论 你做什么工作,会发现都需要这些,接下来介绍如何安装与配置,我按照jdk1.6来说明,其他一致。 下载官网 首先将jdk安装好后进行配置。 右击“计算机”,右键打开“属性”,...

Java中四种访问修饰符的区别

在java中共有4种访问级别,按访问权限由高到低为:public(公有的)、protected(受保护的)、友好的(没有任何访问权限关键字修饰)和private(私有的)。 类型 类内部 同一个包其...

二分法(折半查找)的运用之java实现猜数字游戏

让计算机输入一个数 然后用户进行猜数游戏 一般而言,七次会猜对,如果猜不对,那么就是你的方法不对 在这儿涉及到的一个算法就是二分法 ***二分法查找,***也称为折半法,是一种在有序数组中查找特定元素的搜索算法。二分法查找的思路如下: (1)首先,从数组...

java中的内部类总结

java中的内部类总结,包括静态内部类、私有内部类、方法内部类等 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)...

java高级

java高级

  Java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。下...

JavaWeb(一)之细说Servlet

JavaWeb(一)之细说Servlet

前言   其实javaWeb的知识早就学过了,可是因为现在在搞大数据开发,所以web的知识都忘记了。准备开始慢慢的把Web的知识一点一点的回忆起来,多学一点没有关系,就怕到时候要用的话,什么都不会了。 一、Servlet概述 1.1、Servlet简介   Se...

java中equals,hashcode和==的区别

1、== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值。  2.引...

java如何防止反编译

java如何防止反编译

综述(写在前面的废话) Java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于有今天之风光!但随着java的应用领域越来越广,特别是一些功能要发布到终端用户手中(如Android开发的app),有时候,公司为了商业技术的保密考...

JavaWeb 并发:FOR UPDATE 实战,监测并解决。

JavaWeb 并发:FOR UPDATE 实战,监测并解决。

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket   一、前言 针对并发,老生常谈了。目前一个通用的做法有两种:锁机制:1.悲观锁;2.乐观锁。 但是这篇我主要用于记录我...

Java反射机制详解

Java反射机制详解

     Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 1、关于Class &n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。