日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

mybatis某些字段無法映射成功的解決

瀏覽:222日期:2023-10-21 13:21:46

隨筆記錄下:

剛剛遇到一個(gè)mybatis中reultMap定義正確column與property也都正確,字段的getset方法也都有,但是返回對(duì)象時(shí),有些字段可以對(duì)應(yīng)上有一些則不可以。

找了好久才發(fā)現(xiàn)在sql語句中的 resultMap 寫成了 resultType。。。

很low但是痛。改成resultMap一切正常!

補(bǔ)充知識(shí):MyBatis學(xué)習(xí)總結(jié)——解決字段名與實(shí)體類屬性名不相同的沖突

在平時(shí)的開發(fā)中,我們表中的字段名和表對(duì)應(yīng)實(shí)體類的屬性名稱不一定都是完全相同的,下面來演示一下這種情況下的如何解決字段名與實(shí)體類屬性名不相同的沖突。

一、準(zhǔn)備演示需要使用的表和數(shù)據(jù)

CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT);INSERT INTO orders(order_no, order_price) VALUES(’aaaa’, 23);INSERT INTO orders(order_no, order_price) VALUES(’bbbb’, 33);INSERT INTO orders(order_no, order_price) VALUES(’cccc’, 22);

二、定義實(shí)體類

package me.gacl.domain;/** * @author gacl * 定義orders表對(duì)應(yīng)的實(shí)體類 */public class Order { /** * CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); */ //Order實(shí)體類中屬性名和orders表中的字段名是不一樣的 private int id; //id===>order_id private String orderNo; //orderNo===>order_no private float price; //price===>order_price public int getId() { return id; } public void setId(int id) { this.id = id; } public String getOrderNo() { return orderNo; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } @Override public String toString() { return 'Order [id=' + id + ', orderNo=' + orderNo + ', price=' + price+ ']'; }}

三、編寫測(cè)試代碼

3.1、編寫SQL的xml映射文件

1、創(chuàng)建一個(gè)orderMapper.xml文件,orderMapper.xml的內(nèi)容如下:

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><!-- 為這個(gè)mapper指定一個(gè)唯一的namespace,namespace的值習(xí)慣上設(shè)置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的例如namespace='me.gacl.mapping.orderMapper'就是me.gacl.mapping(包名)+orderMapper(orderMapper.xml文件去除后綴) --><mapper namespace='me.gacl.mapping.orderMapper'> <!-- 根據(jù)id查詢得到一個(gè)order對(duì)象,使用這個(gè)查詢是查詢不到我們想要的結(jié)果的, 這主要是因?yàn)閷?shí)體類的屬性名和數(shù)據(jù)庫(kù)的字段名對(duì)應(yīng)不上的原因,因此無法查詢出對(duì)應(yīng)的記錄 --> <select parameterType='int' resultType='me.gacl.domain.Order'> select * from orders where order_id=#{id} </select> <!-- 根據(jù)id查詢得到一個(gè)order對(duì)象,使用這個(gè)查詢是可以正常查詢到我們想要的結(jié)果的, 這是因?yàn)槲覀儗⒉樵兊淖侄蚊计鹨粋€(gè)和實(shí)體類屬性名相同的別名,這樣實(shí)體類的屬性名和查詢結(jié)果中的字段名就可以一一對(duì)應(yīng)上 --> <select parameterType='int' resultType='me.gacl.domain.Order'> select order_id id, order_no orderNo,order_price price from orders where order_id=#{id} </select> <!-- 根據(jù)id查詢得到一個(gè)order對(duì)象,使用這個(gè)查詢是可以正常查詢到我們想要的結(jié)果的, 這是因?yàn)槲覀兺ㄟ^<resultMap>映射實(shí)體類屬性名和表的字段名一一對(duì)應(yīng)關(guān)系 --> <select parameterType='int' resultMap='orderResultMap'> select * from orders where order_id=#{id} </select> <!--通過<resultMap>映射實(shí)體類屬性名和表的字段名對(duì)應(yīng)關(guān)系 --> <resultMap type='me.gacl.domain.Order' id='orderResultMap'> <!-- 用id屬性來映射主鍵字段 --> <id property='id' column='order_id'/> <!-- 用result屬性來映射非主鍵字段 --> <result property='orderNo' column='order_no'/> <result property='price' column='order_price'/> </resultMap> </mapper>

2、在conf.xml文件中注冊(cè)orderMapper.xml映射文件

<mappers> <!-- 注冊(cè)orderMapper.xml文件, orderMapper.xml位于me.gacl.mapping這個(gè)包下,所以resource寫成me/gacl/mapping/orderMapper.xml--> <mapper resource='me/gacl/mapping/orderMapper.xml'/></mappers>

3.2、編寫單元測(cè)試代碼

package me.gacl.test;import me.gacl.domain.Order;import me.gacl.util.MyBatisUtil;import org.apache.ibatis.session.SqlSession;import org.junit.Test;public class Test2 { @Test public void testGetOrderById(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(); /** * 映射sql的標(biāo)識(shí)字符串, * me.gacl.mapping.orderMapper是orderMapper.xml文件中mapper標(biāo)簽的namespace屬性的值, * getOrderById是select標(biāo)簽的id屬性值,通過select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL */ String statement = 'me.gacl.mapping.orderMapper.getOrderById';//映射sql的標(biāo)識(shí)字符串 //執(zhí)行查詢操作,將查詢結(jié)果自動(dòng)封裝成Order對(duì)象返回 Order order = sqlSession.selectOne(statement,1);//查詢orders表中id為1的記錄 //使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession sqlSession.close(); System.out.println(order);//打印結(jié)果:null,也就是沒有查詢出相應(yīng)的記錄 } @Test public void testGetOrderById2(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(); /** * 映射sql的標(biāo)識(shí)字符串, * me.gacl.mapping.orderMapper是orderMapper.xml文件中mapper標(biāo)簽的namespace屬性的值, * selectOrder是select標(biāo)簽的id屬性值,通過select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL */ String statement = 'me.gacl.mapping.orderMapper.selectOrder';//映射sql的標(biāo)識(shí)字符串 //執(zhí)行查詢操作,將查詢結(jié)果自動(dòng)封裝成Order對(duì)象返回 Order order = sqlSession.selectOne(statement,1);//查詢orders表中id為1的記錄 //使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession sqlSession.close(); System.out.println(order);//打印結(jié)果:Order [id=1, orderNo=aaaa, price=23.0] } @Test public void testGetOrderById3(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(); /** * 映射sql的標(biāo)識(shí)字符串, * me.gacl.mapping.orderMapper是orderMapper.xml文件中mapper標(biāo)簽的namespace屬性的值, * selectOrderResultMap是select標(biāo)簽的id屬性值,通過select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL */ String statement = 'me.gacl.mapping.orderMapper.selectOrderResultMap';//映射sql的標(biāo)識(shí)字符串 //執(zhí)行查詢操作,將查詢結(jié)果自動(dòng)封裝成Order對(duì)象返回 Order order = sqlSession.selectOne(statement,1);//查詢orders表中id為1的記錄 //使用SqlSession執(zhí)行完SQL之后需要關(guān)閉SqlSession sqlSession.close(); System.out.println(order);//打印結(jié)果:Order [id=1, orderNo=aaaa, price=23.0] }}

執(zhí)行單元測(cè)試的結(jié)果:

1、testGetOrderById方法執(zhí)行查詢后返回一個(gè)null。

2、testGetOrderById2方法和testGetOrderById3方法執(zhí)行查詢后可以正常得到想要的結(jié)果。

四、總結(jié)

上面的測(cè)試代碼演示當(dāng)實(shí)體類中的屬性名和表中的字段名不一致時(shí),使用MyBatis進(jìn)行查詢操作時(shí)無法查詢出相應(yīng)的結(jié)果的問題以及針對(duì)問題采用的兩種辦法:

解決辦法一:

通過在查詢的sql語句中定義字段名的別名,讓字段名的別名和實(shí)體類的屬性名一致,這樣就可以表的字段名和實(shí)體類的屬性名一一對(duì)應(yīng)上了,這種方式是通過在sql語句中定義別名來解決字段名和屬性名的映射關(guān)系的。

解決辦法二:

通過<resultMap>來映射字段名和實(shí)體類屬性名的一一對(duì)應(yīng)關(guān)系。這種方式是使用MyBatis提供的解決方式來解決字段名和屬性名的映射關(guān)系的。

以上這篇mybatis某些字段無法映射成功的解決就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线亚洲精品| 91亚洲国产高清| 久久久久99| 色欧美自拍视频| 色综合五月天| 日韩欧美精品| 久久国产精品成人免费观看的软件| 国产中文欧美日韩在线| 国内精品亚洲| 黑森林国产精品av| 久久香蕉国产| 99re国产精品| 热久久免费视频| 99在线|亚洲一区二区| 日韩视频二区| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品毛片在线看| 午夜宅男久久久| 亚久久调教视频| 国产精品欧美在线观看| 精品伊人久久| 欧洲精品一区二区三区| 91精品精品| 亚洲一区二区三区四区五区午夜| 美女久久网站| 欧美私人啪啪vps| 激情综合五月| 亚洲大片在线| 国产亚洲精品v| 日本a口亚洲| 欧美激情网址| 久久久久国产| 在线精品观看| 久久精品国产一区二区| 日本а中文在线天堂| 亚洲精品网址| 88久久精品| 欧美日韩视频免费观看| 一区二区三区四区在线观看国产日韩| 日本午夜精品| 丁香六月综合| 日韩在线观看中文字幕| 国产不卡av一区二区| 婷婷综合网站| 欧美精品91| 五月婷婷六月综合| 日韩久久99| 久久黄色影院| 欧美中文高清| 国产韩日影视精品| 国产精品白丝一区二区三区| 欧美日韩水蜜桃| 欧美一级一区| 天堂资源在线亚洲| 国产午夜久久av| 国产真实久久| 国产亚洲一区二区三区啪| 久久久久99| 亚洲毛片在线免费| 福利一区二区| 中文字幕一区二区三区日韩精品| 久久精品国产99| 视频精品一区二区| 福利一区二区三区视频在线观看| 蜜臀久久99精品久久久久久9 | 精品伊人久久| 视频在线观看一区| 樱桃视频成人在线观看| 91精品国产自产精品男人的天堂| 久久久一二三| 日韩av午夜在线观看| 欧美中文一区二区| 精品精品国产三级a∨在线| 亚洲我射av| 亚洲欧美综合| 高清久久一区| 国产美女视频一区二区| 久久精品国产在热久久| 日韩精品欧美大片| 午夜日韩av| 电影亚洲精品噜噜在线观看| 国产精品1luya在线播放| 伊人国产精品| 久久精品国产www456c0m| 免费在线播放第一区高清av| 亚洲综合不卡| 91精品蜜臀一区二区三区在线| 国产精品久久久久久久久久妞妞| 亚洲三级在线| 亚洲综合另类| 欧美日韩水蜜桃| 神马久久午夜| 精品视频97| 国产乱码精品一区二区三区四区 | 亚洲天堂av资源在线观看| 香蕉人人精品| 欧美xxxx中国| 国产精品大片免费观看| 亚洲三级毛片| 水蜜桃久久夜色精品一区的特点| 久久亚洲国产| 99精品网站| 欧美精品日日操| 日韩成人免费| 国产成人精品免费视| 欧美成人精品午夜一区二区| 日韩一区二区三区四区五区| 免费观看久久久4p| 麻豆亚洲精品| 麻豆亚洲精品| 午夜亚洲福利在线老司机| 狠狠爱成人网| 欧美特黄一级| 久久久久久久久99精品大| 国产精品成人一区二区不卡| 麻豆91精品91久久久的内涵| 亚洲一区二区三区高清| 国产精品日韩| 久久亚洲国产精品一区二区| 日韩一区二区免费看| 在线成人直播| 亚洲在线网站| 麻豆91精品| 在线一区二区三区视频| 自拍自偷一区二区三区| 日韩中文av| 日韩欧美中文字幕电影| 日韩三级精品| 日韩精品午夜视频| 欧美综合精品| 老色鬼精品视频在线观看播放| 久久av影院| 久久一区国产| 国产一区二区三区亚洲综合| 欧美国产美女| 日韩国产网站| 欧美成人高清| 在线精品亚洲| 国产乱码精品一区二区三区四区 | 久久国内精品视频| 国产精品美女在线观看直播| 成人在线免费观看91| 成人在线免费观看91| 欧洲一区二区三区精品| 亚洲手机在线| 亚洲一区二区小说| 国产精品一区二区三区av麻| 精品久久久网| 久久亚洲国产| 蜜桃视频一区二区三区在线观看| 亚洲+小说+欧美+激情+另类| 国产经典一区| 久久久成人网| 巨乳诱惑日韩免费av| 久久狠狠亚洲综合| 91日韩在线| 欧美a级一区| 亚洲五月综合| 国产精品magnet| 蜜臀久久精品| 丝袜国产日韩另类美女| 国产乱人伦精品一区| 欧美三区四区| 亚洲三级视频| 国产伊人久久| 亚洲欧美久久久| 国产精品1luya在线播放| 香蕉成人av| 婷婷精品在线| 91视频一区| 中文无码日韩欧| 日韩av在线播放网址| 91精品观看| 久久精品97| 欧美成人午夜| 国产精品日韩精品在线播放| 欧美亚洲国产精品久久| 日韩美女精品| 久久麻豆精品| 欧美日韩18| 婷婷亚洲综合| 欧美成人一二区| 99在线精品免费视频九九视| 欧美交a欧美精品喷水| 一区久久精品| 麻豆视频观看网址久久| 亚洲男女自偷自拍| 欧美激情一区| 免费国产自线拍一欧美视频| 久久精品亚洲| 鲁大师成人一区二区三区| 久久尤物视频| 蜜臀av一区二区在线免费观看| 精品女同一区二区三区在线观看| 欧美日韩四区| 久久久久久自在自线| 日韩国产欧美三级| 午夜精品婷婷| 国产自产自拍视频在线观看| 欧美一区免费|