亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

Mybatis查詢語句返回對象和泛型集合的操作

瀏覽:18日期:2023-10-18 13:35:13
Mybatis查詢語句返回對象和泛型集合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 { /** * 查詢單條數據, * 每一列的列名都會去Emp實體類中去匹配對應的屬性 * 匹配時會把二邊都轉為小字母進行匹配 * 匹配成功就會調用Emp實體類中對象的set方法 * * 如果列名和Emp的屬性匹配不上, * 1.為查詢結果的列設置一個別名 * 2.將列名ename和屬性ename1建立一個關系 單個屬性建立關系 * * column是不區分大小寫的,property是區分大小寫的 * @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); /** * 查詢出多條數據,每一條數據都是一個Emp對象 * 每一列的列名都會去Emp實體類中去匹配對應的屬性 * 匹配時會把二邊都轉為小字母進行匹配 * 匹配成功就會調用Emp實體類中對象的set方法 * 如果沒有一條數據匹配成功,則不會創建Emp對象 * @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(); }測試類:

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); //打開會話 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是不區分大小寫的,property是區分大小寫的 --> <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>

測試類:

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); //打開會話 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查詢結果集有泛型屬性時可能出現的問題問題:

當接收結果為map或者對象的屬性為泛型時:

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

這時候如果直接將resultType指向對象全限定名稱時,可能會出現問題。因為如果查詢結果的某個字段大于1000會出現','如:1,000.56 。mybatis不會報錯,因為這個對象的這個屬性為泛型,可以接收。而當獲取結果之后即使定義接收的變量類型為:

Mybatis查詢語句返回對象和泛型集合的操作

第二個屬性也會存入String類型的值。后續再處理可能就會出現將string轉為double數據類型轉換錯誤。

解決方法:

定義一個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>

再用一個convert函數規范查詢結果格式

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 亚洲欧美日韩精品久久奇米色影视 | 国产成人99精品免费观看 | 图片综合区| 在线你懂的网站 | 特黄特色大片免费视频大全 | 欧美伦理一区二区三区 | 无套国产| 网红主播vip福利视频 | h版成版在线播放 | 日韩天天摸天天澡天天爽视频 | 色婷婷91| 萌白酱福利视频在线网站 | 久久精品国产自在一线 | 亚洲精品一区二区久久 | 久久精品国产一区二区三区日韩 | 欧美日韩中文国产一区二区三区 | 国产一级淫片a免费播放口欧美 | 国产三级精品三级国产 | 99热国产精品 | 全黄a免费一级毛片人人爱 全黄一级裸片视频在线观看 | 一区二区免费视频观看 | 色婷婷在线视频 | 亚洲最大成人综合网 | 色综合啪啪 | 日韩精品久久久久久 | 亚洲国产美女在线观看 | 18禁片一级毛片视频播放免费看 | 午夜丁香婷婷 | 免费国产一级 | 中日韩欧美一级毛片 | 日韩欧美二区 | 一区二区免费视频 | 国产精品免费视频一区二区 | 精品日韩 | 伊人影视在线观看日韩区 | 国产精品久久一区二区三区 | 黄色免费网站在线 | a级毛片免费高清毛片视频 a级毛片免费播放 | 婷婷六月久久综合丁香乐透 | 日本二区免费一片黄2019 | 欧美一级久久久久久久大片 |