亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

Mybatis查詢語(yǔ)句返回對(duì)象和泛型集合的操作

瀏覽:14日期:2023-10-18 13:35:13
Mybatis查詢語(yǔ)句返回對(duì)象和泛型集合EmpMapper映射接口:

package cn.et.mybatis.lesson03; import java.util.List; import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select; public interface EmpMapper { /** * 查詢單條數(shù)據(jù), * 每一列的列名都會(huì)去Emp實(shí)體類中去匹配對(duì)應(yīng)的屬性 * 匹配時(shí)會(huì)把二邊都轉(zhuǎn)為小字母進(jìn)行匹配 * 匹配成功就會(huì)調(diào)用Emp實(shí)體類中對(duì)象的set方法 * * 如果列名和Emp的屬性匹配不上, * 1.為查詢結(jié)果的列設(shè)置一個(gè)別名 * 2.將列名ename和屬性ename1建立一個(gè)關(guān)系 單個(gè)屬性建立關(guān)系 * * column是不區(qū)分大小寫的,property是區(qū)分大小寫的 * @return */ @Results( { @Result(column='ename',property='ename1'), @Result(column='empNo',property='empNo1'), @Result(column='sal',property='sal1'), } ) @Select('select * from emp where empno=#{0}') public Emp queryEmpByEmpNo(String empNo); /** * 查詢出多條數(shù)據(jù),每一條數(shù)據(jù)都是一個(gè)Emp對(duì)象 * 每一列的列名都會(huì)去Emp實(shí)體類中去匹配對(duì)應(yīng)的屬性 * 匹配時(shí)會(huì)把二邊都轉(zhuǎn)為小字母進(jìn)行匹配 * 匹配成功就會(huì)調(diào)用Emp實(shí)體類中對(duì)象的set方法 * 如果沒(méi)有一條數(shù)據(jù)匹配成功,則不會(huì)創(chuàng)建Emp對(duì)象 * @param empNo * @return */ @Results( { @Result(column='ename',property='ename1'), @Result(column='empNo',property='empNo1'), @Result(column='sal',property='sal1'), } ) @Select('select * from emp') public List<Emp> queryEmp(); }測(cè)試類:

package cn.et.mybatis.lesson03; import java.io.InputStream;import java.util.List; import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test; public class TestMybatis { public static SqlSession getSession(){ String resource = '/cn/et/mybatis/lesson03/mybatis.xml'; InputStream inputStream = TestMybatis.class.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //打開(kāi)會(huì)話 SqlSession session = sqlSessionFactory.openSession(); return session; } public static void main(String[] args) { SqlSession session = getSession(); EmpMapper emp = session.getMapper(EmpMapper.class); Emp obj = emp.queryEmpByEmpNo('8000'); System.out.println(obj); } @Test public void test(){ SqlSession session = getSession(); EmpMapper emp = session.getMapper(EmpMapper.class); List<Emp> result = emp.queryEmp(); for (Emp emp2 : result) { System.out.println(emp2); } }}xml映射-----------

dept_mapper.xml:

<?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'> <!-- 接口映射 namespace必需跟接口的全名一致 --><mapper namespace='cn.et.mybatis.lesson03.resultEntityXml.DeptMapper'> <!-- column是不區(qū)分大小寫的,property是區(qū)分大小寫的 --> <resultMap type='cn.et.mybatis.lesson03.resultEntityXml.Dept' id='myDept'> <result column='deptno' property='deptno1'/> <result column='dname' property='dname1'/> <result column='loc' property='loc1'/> </resultMap> <select resultMap='myDept'> select * from dept where deptno=#{0} </select> </mapper>

測(cè)試類:

package cn.et.mybatis.lesson03.resultEntityXml; import java.io.InputStream; import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class TestMybatis { public static SqlSession getSession(){ String resource = '/cn/et/mybatis/lesson03/mybatis.xml'; InputStream inputStream = TestMybatis.class.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //打開(kāi)會(huì)話 SqlSession session = sqlSessionFactory.openSession(); return session; } public static void main(String[] args) { SqlSession session = getSession(); DeptMapper dept = session.getMapper(DeptMapper.class); Dept result = dept.queryDept('10'); System.out.println(result); } }mybatis查詢結(jié)果集有泛型屬性時(shí)可能出現(xiàn)的問(wèn)題問(wèn)題:

當(dāng)接收結(jié)果為map或者對(duì)象的屬性為泛型時(shí):

@Datapublic class GenericKeyValueVo<K,V> { private K key; private V value;}

這時(shí)候如果直接將resultType指向?qū)ο笕薅Q時(shí),可能會(huì)出現(xiàn)問(wèn)題。因?yàn)槿绻樵兘Y(jié)果的某個(gè)字段大于1000會(huì)出現(xiàn)','如:1,000.56 。mybatis不會(huì)報(bào)錯(cuò),因?yàn)檫@個(gè)對(duì)象的這個(gè)屬性為泛型,可以接收。而當(dāng)獲取結(jié)果之后即使定義接收的變量類型為:

Mybatis查詢語(yǔ)句返回對(duì)象和泛型集合的操作

第二個(gè)屬性也會(huì)存入String類型的值。后續(xù)再處理可能就會(huì)出現(xiàn)將string轉(zhuǎn)為double數(shù)據(jù)類型轉(zhuǎn)換錯(cuò)誤。

解決方法:

定義一個(gè)resultMap,指明javaType

<resultMap type='com.meinergy.mkting.commons.entity.wholesale.vo.GenericKeyValueVo'><result column='key' property='key' javaType='java.lang.String'/><result column='value' property='value' javaType='java.lang.Double'/> </resultMap>

再用一個(gè)convert函數(shù)規(guī)范查詢結(jié)果格式

convert(FORMAT(queryResult, decimal(12, 2))

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

相關(guān)文章:
主站蜘蛛池模板: 国产成人永久免费视频 | www.乱| 天堂1在线观看 | 九九国产精品视频 | 国产在线精品一区二区三区不卡 | 看全色黄大色黄大片女图片 | 91香蕉国产观看免费人人 | 亚洲第一视频网站 | 亚洲 欧美 视频 | 精品久久国产老人久久综合 | 国产网友自拍 | 亚洲男人的天堂在线 | 亚洲国产一区二区三区四区 | 久久免费99精品久久久久久 | 一级一片免费看 | 人与禽的免费一级毛片 | 欧美精品一区二区三区视频 | 毛片免费看 | 成人老司机深夜福利久久 | 国产成人aaa在线视频免费观看 | 一级特黄aaa大片在 一级特黄aaa大片在线观看 | 国产成人高清在线观看播放 | 亚洲精品日韩在线一区 | 国产精选经典三级小泽玛利亚 | 久草在线视频新时代视频 | 碰碰碰精品视频在线观看 | 亚洲品质自拍视频网站 | 两性色午夜视频免费国产 | 亚洲国产精品一区二区九九 | 免费看黄色片的网站 | 亚洲1314| 国产伦码精品一区二区三区 | 亚洲国产成人在线视频 | 亚洲一区二区成人 | 成人精品一区二区三区中文字幕 | 国产精品精品 | 国产综合久久一区二区三区 | 欧美精品亚洲一区二区在线播放 | 中文字幕精品一区二区2021年 | 毛片免费视频观看 | 在线观看亚洲网站 |