精华内容
下载资源
问答
  • resultmap使用方法
    2022-05-16 10:36:57

    sql查询语句

    <resultMap id="resultBrand" type="brand">
        <result column="brand_name" property="brandName"></result>
        <result column="company_name" property="companyName"></result>
    </resultMap>
    <select id="selectAll" resultMap="resultBrand">
        select *
        from tb_brand;
    </select>
    

    代码

    private static void selectAll() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
        List<Brand> brands = mapper.selectAll();
        for (Brand brand : brands) {
            System.out.println(brand);
        }
        sqlSession.close();
    }
    
    更多相关内容
  • resultMap使用方法

    千次阅读 2021-12-21 16:25:52
    resultMap使用方法

    resultMap使用案例:

    1.CustomObjec对象的定义:

    public class CustomObject {
        private Integer cid;
        private String cname;
        private String pwd;
    

    2.数据库 User表 中的列名

    id、name、pwd

    可以看出,用来接收数据的CustomObject对象User表 中的列名和对象名不一一对应

    如果要用resultType,数据库User表会把 数据传递CustomObject对象与列名相同的的属性名。这样只有对象中的pwd属性能正确接收User表中的pwd列的值

    此时就需要用到resultMap,建立 CustomObject 对象User表的各列一一对应关系

    3. dao接口方法:

    CustomObject selectById2(@Param("stuid") Integer id);
    

    4. mapper文件内的 sql语句 及 resultMap定义语句:

    <!--    定义resultMap
            id:给resultMap的映射关系自定义一个名称,是唯一值
            type:填java类型的全限定名称-->
        <resultMap id="customMap" type="com.gys.vo.CustomObject">
    <!--        定义列名和属性名的对应关系-->
    <!--        主键列使用id标签-->
            <id column="id" property="cid"/>
    <!--        非主键列使用result标签-->
            <result column="name" property="cname"/>
    <!--        列名和属性名相同则不用再定义-->
        </resultMap>
    <!--    使用resultMap属性来制定映射关系-->
        <select id="selectById2" resultMap="customMap">
            select * from User where id=#{stuid}
        </select>
    

    作用:

    User表主键列名id 对应 CustomObject对象的属性 cid
    User表非主键列名name 对应 CustomObject对象的属性 cname
    由于 User表非主键列名pwdCustomObject对象的属性 pwd 已经是对应关系,所以不需要再定义

    select标签,使用resultMap属性,id的值为 自定义的 resultMap 的 id 例如上面定义的customMap,表明在此标签中执行 id 为 customMap 的 resultMap 所定义的映射关系

    5. 测试:

    //    1.使用工具类
        @Test
        public void testSelectById2(){
            SqlSession session = MyBatisUtil.getSqlSession();
            StudentDao dao = session.getMapper(StudentDao.class);
            CustomObject cstudent = dao.selectById2(3); // 传入参数 id=3
            System.out.println("student = " + cstudent);
            session.close();
        }
    

    6. 结果:
    student = CustomObject{cid=3,cname=‘李四3’, pwd=‘lisi3’}

    7. 日志:
    == Preparing: select * from User where id=?
    == Parameters: 3(Integer)
    == Columns: id, name, pwd
    == Row: 3, 李四3, lisi3
    == Total: 1

    比较:

    不使用 resultMap定义映射关系,而是直接使用resultType指定数据接收对象结果:

    1. 只需要修改mapper文件内的 sql语句,其他不变:

    <!--    直接使用resulttype-->
        <select id="selectById2" resultType="com.gys.vo.CustomObject">
            select * from User where id=#{stuid}
        </select>
    

    2.结果:
    student = CustomObject{cid=null, cname=‘null’, pwd=‘lisi3’}

    3.日志:
    == Preparing: select * from User where id=?
    == Parameters: 3(Integer)
    == Columns: id, name, pwd
    == Row: 3, 李四3, lisi3
    == Total: 1

    通过两者的日志对比,可以知道,都获取到了完整信息。
    使用resultMap的方法,建立映射关系,可以给对象的三个属性都接收数据成功
    使用resultType的方法,没有建立映射关系,只有一个原先就存在对应关系的属性pwd接收数据成功

    展开全文
  • sql片段、resultMap、简化代码

    使用场景:

            我们在写sql语句的时候需要用到起别名的功能,这个时候可以在sql语句里一个一个进行编写,不过比较麻烦,如果数据过多则非常不方便导致代码冗余,比如举个例子,这里有一张tb_brand的表:

    我们在代码里需要用驼峰命名,将brand_name改为brandName,company_name改为companyName,这个时候最简单的办法就是一个一个用as改

    <!--    1   最原始的改名方法-->
        <select id="selectAll" resultType="brand">
            select id, brand_name as brandName, company_name as companyName, ordered, description, status
            from tb_brand;
        </select>

    但这样太过于麻烦,这个时候有两种方法进行简化:

    1、sql片段

    使用方法:

    1.1定义一个sql片段

    在sql片段里写上数据库表列名包含要改的名称;

    1.2在select里引用

    再在select里的sql语句中用

    <include refid="selectCol"></include>

    标签,引入sql片段取的名字,这样就可以了。这里的include标签是固定用法,记住即可。

    <!--   2  sql片段-->
    <sql id="selectCol">
        id,brand_name as brandName,company_name as companyName,ordered,description,status
    </sql>
    
    <select id="selectAll" resultType="com.itheima.pojo.Brand">
         select
         <include refid="selectCol"></include>
         from tb_brand;
    </select>

    2、更简单完备的:resultMap

    使用方法:

    2.1定义一个resultMap标签

    里面有一个子标签result,这里面可以定义要改的名称和改之后的名称,column是列的意思,也就是要改的列名,property是改之后的名称;

    2.2直接使用查询sql语句

    直接使用*查询,不过要把后面的resultType换成resultMap,并且引入resultMap标签取的名字即可。这样改多少都很方便了。

    <!--    3  resultMap  -->
    <resultMap id="BrandResultMap" type="brand">
        <result column="brand_name" property="brandName"></result>
        <result column="company_name" property="companyName"></result>
    </resultMap>
    
    <select id="selectAll" resultMap="BrandResultMap">
        select *
        from tb_brand;
    </select>

    注:

    在resultMap取别名的时候有限制,property可能会报错,这是因为没有引入类型别名的配置文件,这时候只需要在mybatis的核心配置文件里的<configuration></configuration>包裹的代码段里引入下面的配置文件

    <!-- 类型别名    包扫描  在给表的列起别名的时候会用到-->
        <typeAliases>
            <package name="这里就是你的包名"/>
        </typeAliases>

    这样就可以正常使用了!

    展开全文
  • resultMap 是可以自己定义返回类型的一个标签,很方便关于mybatis的一些基本增删改查和文件配置,请参考我的另一篇文章点击打开链接

    resultMap 是可以自己定义返回类型的一个标签,很方便关于mybatis的一些基本增删改查和文件配置,请参考我的另一篇文章点击打开链接。目录如下

    book.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">
    
    <mapper namespace="com.ljf.mybatis.inter.BookOperation">
    	
    	<resultMap type="Book" id="booklist">
    		<id column="book_id" property="id" />
    		<result column="book_name" property="name" />
    		<result column="book_author" property="author" />
    		<result column="book_price" property="price" />
    	</resultMap>
    
    	<select id="selectAllBook" resultMap="booklist">
    		select * from Book
    	</select>	
    </mapper>

    自己定义了一个返回值类型booklist和一个查询所有图书信息的SQL,记得 返回值是resultMap一定不是resultType,这点一定要记得,我刚开始学的时候这点没有意识到,一直报错,还不知道错误是什么,查了不少文章,也浪费不少时间,这点很不容易发现。

    resultMap中column对应数据的字段,property对应Java Bean 中的属性;

    mapper中的namespace对应接口的路径,下边是接口代码:

    package com.ljf.mybatis.inter;
    
    import java.util.List;
    
    import com.ljf.mybatis.Book;
    
    public interface BookOperation {
    	public List<Book> selectAllBook();
    }
    
    以上就是简单的resultMap的简单用法,这个真的很方便,是Mybatis的一大特色。
    展开全文
  • mybatis使用先写dao层的接口文件,配合mpper文件,在mapper的nameSpace中配置接口 在mapper文件中的dtd文件有两个,在mapper.xml中配置mybatis-3-mapper.dtd约束文件 在mybatis.config中配置mybatis-3-config.dtd,...
  • Mybatis-ResultMap使用

    2022-06-15 09:19:52
    1、当查询结果的字段名和实体对象中的字段名称不一致时,使用resultMap来显示进行映射 2、多表连接查询 关联映射关系 一对一、多对一、一对多、多对多。 员工表和部门表,员工是多方,部门是1方 多对一:sys_user -...
  • Mybatis中ResultMap使用

    2022-07-25 15:30:45
    使用 Mybatis 快速上手封装 ResultMap
  • <select id="getSaleAttrsBySpuId" resultMap="skuItemSaleAttrVo"> select ssav.attr_id, ssav.attr_name, ssav.attr_value, group_concat(distinct info.sku_id) sku_ids from pms_sku_info info left join pms_...
  • MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。...
  • ResultMap简单使用自留

    2021-07-18 12:13:19
  • Mybatis中ResultMap自定义映射规则
  • resultMap的作用是将多张表联合查询的结果集中的字段,自动对应到对应的实体(包括主实体和其中嵌套的关联实体)中,其中association标签是用来指明关联的类以及需要自动填充进入的字段的
  • mybatis简单resultMap使用

    2021-04-25 22:53:49
    select *from user select> mapper> resultMap标签的解释: id可以认为定义方法的名称,下面select中的resultMap传入id的值就相当于使用这个方法完成映射。 type是实体类名 column对应数据库中的字段 property是实体...
  • Mybatis的介绍以及使用:http://www.mybatis.org/mybatis-3/zh/index.html 转自:https://www.cnblogs.com/kenhome/p/7764398.html resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表...
  • Mybatis中resultMap使用

    2021-04-05 21:13:19
  • Mapper.xml文件: 配置resultMap标签,映射表字段和pojo属性名 SELECT id, user_id FROM `order` 使用resultMap进行关联查询 一对一查询:一个订单只能对应一个用户。 一个订单信息只能是一个人下的订单,从查询订单...
  • Employee public ...resultMap ...-- 其他不指定的列会自动封装:我们只要写resultMap就把全部的... 流程:使用select指定的方法(传入column指定的这列参数的值)查出对象,并封装给property指定的属性 --> ...
  • resultMap 使用

    2021-03-22 10:34:58
    resultmap标签是mybatis框架中常用的一个元素,也是非常重要的映射元素,用于实现mybatis的高级映射.其应用场景:1)表中字段与pojo类中属性名不一致时,(如stu_id/stuId).<resultMap type="返回类型全限定名" id=...
  • 绝大多数情况下,一条完整的信息至少分别来自两张或以上的表,连表查询非常常见,这种情况下可以使用resultMap属性 1、使用resultMap实现简单结果映射: user表: role表: user表中的userRole是外键,对应role表中...
  • ResultMap标签的用法

    千次阅读 2019-07-31 16:44:12
    .ResultMap标签的用法 1.作用 1.自定义结果集映射: ...注意:select标签中的ResultMap属性和ResultType属性,两者不能同时使用 2.解决方式 1.通过给字段起别名方式 让别名的模型对像的Setter方法后缀一致. 2.使用R...
  • resultmap的用法

    千次阅读 2020-02-17 14:31:42
    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。...
  • resultMap的用法

    2020-06-07 18:31:57
    不在需要手动封装查询数据,MyBatis通过ORM工具自动完成了数据的封装前提是查询语句的字段和pojo类的属性名要一一映射,要一致,不区分大小写,mybatis封装数据使用的是无参构造方法,然后set进去。 如果pojo类的...
  • Mybatis_resultMap方法

    2022-04-12 10:08:27
    resultMap一. 案例分析1. 根据id查用户2. resultMap的属性二. resultMap1. 属性2. 标签2.1 constructor 标签2.2 id、result 标签 常用 一. 案例分析 1. 根据id查用户 2. resultMap的属性 二. resultMap 1. 属性 ...
  • ResultMap使用

    千次阅读 2018-08-22 14:25:30
    MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而resultMap就是结果集映射的配置...
  • MyBatis中ResultMap使用实例解析

    千次阅读 2020-02-06 15:15:14
    该项目是在:Spring Boot整合MyBatis框架操作MySQL数据库实例的基础上继续深入使用MaBatis的各项功能。项目开源地址:https://github.com/Yitian-Zhang/springboot-learning(包含下述所有代码)。 实例说明:在...
  • mybatis中ResultMap使用

    2020-10-28 21:45:06
    ResultMap使用是为了解决属性名和字段名不一致的问题。 问题 查看之前的数据库的字段名 Java中的实体类设计 public class User { private int id; private String name; private String password; } //注意...
  • 文章目录一、使用resultMap的相关代码1)实体类映射文件2)Mapper层(dao)实现接口3)测试类测试方法(APP)二、后台console打印报错信息三、解决该问题(还没有找到) 一、使用resultMap的相关代码 1)实体类映射...
  • 建立SQL查询结果字段与实体属性的映射关系,简单说就是若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射
  • @Results与@ResultMap使用

    万次阅读 多人点赞 2018-12-29 17:34:11
    使用@Results注解来标注之前的resultMap使用@ResultMap来标注结果集引用的resultMap 例: XML时候 &lt;!-- resultMap 设置返回值的类型和映射关系 --&gt; &lt;resultMap id="user...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,562
精华内容 22,624
关键字:

resultmap使用方法