日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2023/12/31 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实体类与数据库表映射关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在代碼編寫過程中,避免不了與數據庫打交道,而這最基本的就是如何把數據映射為實體類,下面介紹幾種比較常用的映射方式。
一: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 configurationPUBLIC "-//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; }

總結

以上是生活随笔為你收集整理的Java实体类与数据库表映射关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。