iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Mybatis怎么查询语句返回对象和泛型集合
  • 804
分享到

Mybatis怎么查询语句返回对象和泛型集合

2023-06-20 18:06:41 804人浏览 安东尼
摘要

这篇文章主要介绍“mybatis怎么查询语句返回对象和泛型集合”,在日常操作中,相信很多人在Mybatis怎么查询语句返回对象和泛型集合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis怎么查询语句

这篇文章主要介绍“mybatis怎么查询语句返回对象和泛型集合”,在日常操作中,相信很多人在Mybatis怎么查询语句返回对象和泛型集合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis怎么查询语句返回对象和泛型集合”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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 {    @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);    @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 id="queryDept" 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 id="StrKeyDoubleValueMap" 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怎么查询语句返回对象和泛型集合”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Mybatis怎么查询语句返回对象和泛型集合

本文链接: https://www.lsjlt.com/news/299148.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis怎么查询语句返回对象和泛型集合
    这篇文章主要介绍“Mybatis怎么查询语句返回对象和泛型集合”,在日常操作中,相信很多人在Mybatis怎么查询语句返回对象和泛型集合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis怎么查询语句...
    99+
    2023-06-20
  • Mybatis查询语句返回对象和泛型集合的操作
    Mybatis查询语句返回对象和泛型集合 EmpMapper映射接口: package cn.et.mybatis.lesson03; import java.util.Lis...
    99+
    2024-04-02
  • mybatis主从表关联查询,返回对象带有集合属性解析
    目录主从表关联查询,返回对象带有集合属性VersionResult为接收返回数据对象UpdateRecordEntity为从表数据mapper.xml写法,这个是关键sql...
    99+
    2024-04-02
  • mybatis查询返回Map<String,Object>类型怎么配置
    这篇文章主要介绍“mybatis查询返回Map<String,Object>类型怎么配置”,在日常操作中,相信很多人在mybatis查询返回Map<String,Object>类型怎么配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-07-05
  • C#怎么使用泛型集合存储不同类型的对象
    在C#中,您可以使用泛型集合来存储不同类型的对象。为此,您可以使用泛型类List或Dictionary<TKey, TValu...
    99+
    2024-04-09
    C#
  • Mybatis查找返回Map,List集合类型的数据方式是什么
    这篇文章主要介绍“Mybatis查找返回Map,List集合类型的数据方式是什么”,在日常操作中,相信很多人在Mybatis查找返回Map,List集合类型的数据方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-20
  • Linq联合查询表结果集的返回怎么实现
    本篇内容介绍了“Linq联合查询表结果集的返回怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,我们先来了解一些Linq联合查询的...
    99+
    2023-06-17
  • Mybatis查询语句条件为枚举类型时报错怎么办
    这篇文章主要介绍Mybatis查询语句条件为枚举类型时报错怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Mybatis查询语句条件为枚举类型报错通常我们对于数据库中一些枚举字段使用tinyInt类型,而java...
    99+
    2023-06-26
  • 怎么解决mybatis一对多查询resultMap只返回了一条记录问题
    本篇内容介绍了“怎么解决mybatis一对多查询resultMap只返回了一条记录问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题描述...
    99+
    2023-06-21
  • Mybatis定义参数方法和聚合查询、主键回填怎么实现
    这篇文章主要讲解了“Mybatis定义参数方法和聚合查询、主键回填怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis定义参数方法和聚合查询、主键回填怎么实现”吧!一、使用#...
    99+
    2023-07-05
  • PHP与MySQL索引的查询语句优化和索引返回的性能优化策略及其对性能的影响
    数据库是现代应用开发中不可或缺的一部分,而针对数据库的查询语句优化和索引返回的性能优化是开发人员应该重点关注的问题。索引是一种用于提高数据库查询效率的重要数据结构,它通过在表中创建特定字段的索引来加速数据的查找和排序过程。本文将重点讨论PH...
    99+
    2023-10-21
    PHP 查询优化 MySQL索引
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作