电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:10日期:2023-10-18 13:35:13
Mybatis查詢(xún)語(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 { /** * 查詢(xún)單條數(shù)據(jù), * 每一列的列名都會(huì)去Emp實(shí)體類(lèi)中去匹配對(duì)應(yīng)的屬性 * 匹配時(shí)會(huì)把二邊都轉(zhuǎn)為小字母進(jìn)行匹配 * 匹配成功就會(huì)調(diào)用Emp實(shí)體類(lèi)中對(duì)象的set方法 * * 如果列名和Emp的屬性匹配不上, * 1.為查詢(xún)結(jié)果的列設(shè)置一個(gè)別名 * 2.將列名ename和屬性ename1建立一個(gè)關(guān)系 單個(gè)屬性建立關(guān)系 * * column是不區(qū)分大小寫(xiě)的,property是區(qū)分大小寫(xiě)的 * @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); /** * 查詢(xún)出多條數(shù)據(jù),每一條數(shù)據(jù)都是一個(gè)Emp對(duì)象 * 每一列的列名都會(huì)去Emp實(shí)體類(lèi)中去匹配對(duì)應(yīng)的屬性 * 匹配時(shí)會(huì)把二邊都轉(zhuǎn)為小字母進(jìn)行匹配 * 匹配成功就會(huì)調(diào)用Emp實(shí)體類(lèi)中對(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è)試類(lèi):

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ū)分大小寫(xiě)的,property是區(qū)分大小寫(xiě)的 --> <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è)試類(lèi):

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查詢(xún)結(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(chēng)時(shí),可能會(huì)出現(xiàn)問(wèn)題。因?yàn)槿绻樵?xún)結(jié)果的某個(gè)字段大于1000會(huì)出現(xiàn)','如:1,000.56 。mybatis不會(huì)報(bào)錯(cuò),因?yàn)檫@個(gè)對(duì)象的這個(gè)屬性為泛型,可以接收。而當(dāng)獲取結(jié)果之后即使定義接收的變量類(lèi)型為:

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

第二個(gè)屬性也會(huì)存入String類(lèi)型的值。后續(xù)再處理可能就會(huì)出現(xiàn)將string轉(zhuǎn)為double數(shù)據(jù)類(lèi)型轉(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ī)范查詢(xún)結(jié)果格式

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

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

相關(guān)文章:
主站蜘蛛池模板: 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 聚丙烯酰胺_厂家_价格-河南唐达净水材料有限公司 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 深圳网站建设-高端企业网站开发-定制网页设计制作公司 | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 至顶网| 致胜管家软件服务【在线免费体验】 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 重庆私家花园设计-别墅花园-庭院-景观设计-重庆彩木园林建设有限公司 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 合肥注册公司|合肥代办营业执照、2024注册公司流程 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 |