成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

解決MyBatis中為類配置別名,列名與屬性名不對應的問題

瀏覽:200日期:2023-10-21 09:34:16

在傳參與接收返回結果的時候,咱們一直是使用的全限定名。但是MyBatis自己在使用很多類型的時候(如Integer,Boolean)卻可以直接使用別名。那么,咱們自己的寫的類能不能使用別名呢?可以。需要配置。

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'><!-- 完成一個mybatis-config.xml的文件 -> 作用:配置連接數據庫的所有需要的環境 必須連接到所有要使用的映射文件(ProductMapper.xml) --> <!--configuration 根目錄 --><configuration> <!-- 引入(關聯)db.properties文件 --> <properties resource='db.properties'></properties> <!-- 配置別名:在MyBatis中為一個類取別名 配置別名是為了在對象映射文件中接收參數類型和返回參數類型時使用--> <typeAliases> <!-- 設置這個包下面的所有類的別名 <package name='cn.itsource.domain'/> --> <!-- 設置單個類的別名 alias:取的別名 type:這個別名所對應的Java類 別名使用的時候與大小寫無關 --> <typeAlias alias='Product' type='cn.itsource.domain.Product'/> </typeAliases> <!-- 環境們:很多環境 default:表示默認使用哪一個環境--> <environments default='development'> <!-- 單個環境:一個環境 id:表示這個環境的名稱--> <environment id='development'> <!-- transactionManager:事務管理器 (使用的JDBC事務管理器)--> <transactionManager type='JDBC'></transactionManager> <!-- MyBatis自??OOLED連接池(數據源) --> <dataSource type='POOLED'> <property name='driver' value='${db_driverClassname}' /> <property name='url' value='${db_url}' /> <property name='username' value='${db_username}' /> <property name='password' value='${db_password}' /> </dataSource> </environment> </environments> <!-- resource:表示 核心配置文件(mybatis-config.xml)必須與所有的對象映射文件(ProductMapper.xml)關聯!!!! --> <mappers> <mapper resource='cn/itsource/domain/ProductMapper.xml' /> </mappers></configuration>

上面配置了別名,那么對象與映射文件中就可以直接使用別名,而不需要使用全限定名稱

<?xml version='1.0' encoding='UTF-8'?><!-- 完成一個對象關系映射文件 -> 作用:一個對象的所有SQL都應該寫在這個映射文件中 這個文件一般和我們的domain寫在同一個包里面,取名為 -> domain的名稱+Mapper.xml --> <!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN''http://mybatis.org/dtd/mybatis-3-mapper.dtd'> <!-- namespace:命名空間(每個Mapper必須有命名空間) --><mapper namespace='cn.itsource.domain.ProductMapper'> <!-- select:它里面寫查詢語句 id:查詢語句的唯一標識(名稱不能重復) 如何在 java代碼中找到sql語句? 命名空間+id 例子:cn.itsource.domain.ProductMapper.select parameterType:傳入的參數類型。 除了MyBatis支持的類型,其它的類型都通通使用全限定名 resultType:返回的每一條數據的結果類型(結果類型寫權限定名稱 ) 查詢功能使用 --> <select parameterType='Long' resultType='Product'> select * from product where id = #{id} </select> <!-- resultType:表示返回的數據類型 --> <select resultType='Product'> select * from Product </select> <!--parameterType :表示傳入參數(Product)。 useGeneratedKeys:是否需要獲取主鍵 keyColumn:主鍵在數據庫中的名稱(不寫的話默認名稱和keyProperty一致) keyProperty:對象中的屬性(代表主鍵的那個屬性) --> <insert parameterType='Product' useGeneratedKeys='true' keyColumn='id' keyProperty='id'> insert into product (productName,dir_id,salePrice,supplier,brand,cutoff,costPrice) values(#{productName},#{dir_id},#{salePrice},#{supplier},#{brand},#{cutoff},#{costPrice}) </insert> <!-- parameterType:接收參數沒有寫權限頂名稱,使用的別名(簡寫) --> <delete parameterType='long'> delete from product where id = #{id} </delete> <update parameterType='Product'> update product set productName=#{productName},dir_id=#{dir_id}, salePrice=#{salePrice},supplier=#{supplier},brand=#{brand},cutoff=#{cutoff},costPrice=#{costPrice} where id = #{id} </update> </mapper>

列名與屬性名不對應的解決方案(截圖不完整)

做映射文件的時候,只做了表與對象之間的聯系。并沒有做列與字段之間的聯系。那么它們之間是怎么聯系上的呢?

由于之前咱們的列名與屬性名是一樣的,因此框架進行了自動的識別。

那么,如果咱們的列名與屬性名不一致了(對應不上),這時候應該怎么辦呢?這時候需要把哪些列名與屬性名對應上。

在MyBatis中,提供了一個resultMap的標簽,就是讓咱們來完成返回結果的關系對應的,使用方式如下:

解決MyBatis中為類配置別名,列名與屬性名不對應的問題

注意:主鍵設置需要單獨配置 如: <id column='id' property='id' />

<!-- 返回的數據映射 type:代表是要映射的對象 id:代表唯一(過會我們要拿到它)--><resultMap type='cn.itsource.domain.Product' id='productMap'> <!-- column:對應的列名 property:對應的屬性名 --> <id column='id' property='id' /> <result column='productName' property='name' /></resultMap> <select parameterType='long' resultMap='productMap'> select * from product where id = #{id}</select>

補充知識:MyBatis - 實體類的屬性名和數據庫列名不一致時的兩種解決辦法!

問題:兩者不一致時 , 查詢結果無法封裝到實體!(也就無法查詢出來)

解決MyBatis中為類配置別名,列名與屬性名不對應的問題

① 查詢的sql語句中使用別名進行查詢.

但要注意: 字段名的別名 要和 實體類的屬性名一致!

解決MyBatis中為類配置別名,列名與屬性名不對應的問題

UserMapper.xml

<!-- namespace:接口的全路徑名. --><mapper namespace='com.xxx.dao.UserMapper'> <!-- 使用別名 --> <select resultType='com.xxx.domain.User'> select id as userId, username as userName, address as userAddress, sex as userSex, birthday as userBirthday from user; </select></mapper>

注: 如果使用別名 , 每一個sql語句都需要加別名 (很麻煩)

故: 一般都使用第二種.

② 使用resultMap ★

UserMapper.xml

<mapper namespace='com.jxj.dao.UserDao'> <resultMap type='User'> <!-- 主鍵字段 property: 實體類屬性名. column: 庫中表的列名 javaType: 數據類型. --> <id property='userId' column='id' javaType='int'></id> <!-- 非主鍵字段 --> <result property='userSex' column='sex' javaType='string'></result> <result property='userAddress' column='address' javaType='string'></result> <result property='userBirthday' column='birthday' javaType='date'></result> <result property='username' column='username' javaType='string'></result> </resultMap> <select resultMap='userResultMap'> select * from user </select>

注: select中resultMap的屬性值 要和 resultMap中id的屬性值一樣.

測試類: UserMapper.java

@Testpublic void queryAll() throws IOException { // 1.創建工廠類. InputStream in = Resources.getResourceAsStream('mybatis-config.xml'); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); // 2.創建sql對象. SqlSession sqlSession = sqlSessionFactory.openSession(); // 3.創建接口的實現類對象. UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 4.調用接口中的方法 (代理) List<User> users = mapper.queryAll(); for (User user : users) { System.out.println(user); } sqlSession.close(); in.close();}

以上這篇解決MyBatis中為類配置別名,列名與屬性名不對應的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Mybatis 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美日韩午夜精品| 久久日韩精品一区二区五区| 在线播放中文字幕一区| 日韩精品一二三| 国产精品久久久久9999高清| 久久天天做天天爱综合色| 午夜精品久久久久影视| 最近看过的日韩成人| 欧美韩国日本综合| 国产精品一区在线| 欧美人狂配大交3d怪物一区| 久久99精品久久久久久久久久久久 | 国内一区二区三区| 国产欧美一区二区在线| 99视频一区二区| 久久久亚洲午夜电影| 久久综合综合久久综合| 色噜噜夜夜夜综合网| 国产精品亲子乱子伦xxxx裸| 狠狠色狠狠色综合| 色妹子一区二区| 成人免费小视频| 国产精品99久久久久久似苏梦涵 | 欧美区在线观看| 亚洲最新视频在线观看| 一区二区国产精品| 亚洲永久免费视频| 午夜久久美女| 日韩午夜中文字幕| 成人激情黄色小说| 国产亚洲一二三区| 大陆成人av片| 精品噜噜噜噜久久久久久久久试看 | 精品国产1区二区| 不卡电影一区二区三区| 91精品福利在线| 亚洲欧美自拍偷拍| 在线视频成人| 亚洲主播在线播放| 亚洲无线观看| 久久无码av三级| 国产一区二区三区国产| 久久国产日韩欧美| 免费看黄色91| 欧美一区二区在线看| 99re这里只有精品首页| 国产精品天天摸av网| 一区二区不卡在线视频 午夜欧美不卡'| 久久天天做天天爱综合色| 韩国女主播一区| 欧美在线视频你懂得| 国产精品一区专区| 精品国产露脸精彩对白| 国产精品亚洲视频| 26uuu成人网一区二区三区| 欧美日韩综合精品| 亚洲一区电影777| 色婷婷综合激情| 国产精品一区不卡| 555夜色666亚洲国产免| 另类小说图片综合网| 日韩一二在线观看| 国产在线日韩| 国产精品久久看| 欧美精品七区| 精品国内二区三区| 黄色成人在线网址| 国产精品女同一区二区三区| 国产一区二区三区免费不卡| 毛片av一区二区| 久久xxxx精品视频| 国产一区二区精品久久99| 国产日产欧产精品推荐色| 性欧美精品高清| 亚洲成av人综合在线观看| 欧美日韩一区二区三区在线| 激情六月婷婷久久| 欧美午夜精品免费| www.色综合.com| 久久免费视频色| 亚洲人久久久| 一区二区三区在线免费观看| 一区二区三区三区在线| 伦理电影国产精品| 欧美精品一区二区在线观看| 一区二区三区你懂的| 国产一区二区成人久久免费影院| 国产蜜臀av在线一区二区三区| 欧美另类专区| 水蜜桃久久夜色精品一区的特点| 欧美一区二区三区视频| 亚洲第一区色| 九色综合国产一区二区三区| 国产免费久久精品| 在线观看91视频| 欧美一区激情| 国产精品网站在线播放| 在线亚洲一区二区| 欧美黄色免费| 日本视频免费一区| 欧美视频在线观看一区| 欧美精品入口| 亚洲人成影院在线观看| 欧美人与z0zoxxxx视频| 一区三区视频| 亚洲一区二区三区影院| 欧美成人三级电影在线| 亚洲男女自偷自拍| 99精品视频中文字幕| 亚洲成av人**亚洲成av**| 久久亚洲一区二区三区明星换脸| 欧美日韩精品| 亚洲国产一区二区在线播放| 在线综合视频播放| 91视视频在线观看入口直接观看www | 老牛国产精品一区的观看方式| 91首页免费视频| 人人精品人人爱| 日韩免费看网站| 午夜亚洲伦理| 激情五月婷婷综合网| 亚洲同性gay激情无套| 日韩免费观看2025年上映的电影 | 久久午夜羞羞影院免费观看| 亚洲高清在线播放| 国内精品伊人久久久久av一坑| 精品国产三级a在线观看| 国产精品av一区二区| 亚洲国产欧美在线| 欧美三级电影精品| 成人av免费在线| 亚洲欧美电影一区二区| 在线观看一区二区精品视频| 白白色 亚洲乱淫| 日本不卡视频在线观看| 精品国产亚洲在线| 欧美性xxxxxx少妇| 欧美黄色一区二区| 国产精品一区免费视频| 中文字幕在线视频一区| 欧美一二三区精品| 欧美在线一区二区| 国产一区二区三区四区hd| 国产精品亚洲成人| 日本不卡视频在线| 一二三区精品视频| 国产精品网站导航| 337p日本欧洲亚洲大胆色噜噜| 69堂国产成人免费视频| 久久午夜精品| 成人综合激情网| 麻豆精品国产91久久久久久| 亚洲国产精品天堂| 一区二区在线观看视频| 国产精品二三区| 国产欧美精品一区aⅴ影院 | 亚洲激情在线播放| 3d成人h动漫网站入口| 在线成人www免费观看视频| 久久精品国产亚洲高清剧情介绍 | 亚洲成a天堂v人片| 亚洲精品久久嫩草网站秘色| 国产日韩欧美精品一区| 一本色道久久加勒比精品| 国产视频亚洲| 99久久亚洲一区二区三区青草 | 久久精品国产亚洲5555| 日韩黄色片在线观看| 玉足女爽爽91| 欧美精品一区二区在线播放| 噜噜爱69成人精品| 99精品久久只有精品| 喷白浆一区二区| 亚洲天堂成人在线观看| 欧美极品aⅴ影院| 久久在线免费观看| 欧美天堂亚洲电影院在线播放| 亚洲天堂激情| 国产成人av自拍| 国产精品一卡二卡| 午夜精品久久久久久久久| 亚洲成av人片一区二区梦乃| 亚洲大片免费看| 天天av天天翘天天综合网| 五月婷婷久久综合| 日韩国产在线一| 人人爽香蕉精品| 亚洲男同性视频| 伊人性伊人情综合网| 亚洲一区免费视频| 香蕉久久一区二区不卡无毒影院| 丝袜美腿高跟呻吟高潮一区| 亚洲色欲色欲www| 国产视频一区在线播放| 国产色产综合色产在线视频| 中文子幕无线码一区tr| 亚洲三级免费观看| 午夜精品久久久久久久蜜桃app | 亚洲成人激情自拍| 日本色综合中文字幕|