zoukankan      html  css  js  c++  java
  • SpringBoot学习--05SpringBoot整合Mybatis(下)(mybatis中踩过的坑)--不定时更新

    我的数据库表结构如下:

    实体类如下:

    package com.luozhen.entity;
    
    import java.util.Date;

    @Data
    public class SysDepartment { 

    private
    String id;

    private String name;

    private
    Date createdate; private String parentId; }

    我在mapper.xml中写了三条sql语句,如下

      <!-- 显示所有的信息 -->
      <select id="selectAllForType" resultType="map">
      select * from sys_department
      </select>
      
      <!-- 显示所有的信息 -->
      <select id="selectAllForEntity" resultType="com.luozhen.entity.SysDepartment">
      select * from sys_department
      </select>
      <!-- 显示所有的信息 -->
      <select id="selectAllForMap" resultMap="BaseResultMap">
      select * from sys_department
      </select>

    除了id名不同,返回的类型值也不同.

    1.第一个的返回值类型为resultType="map",其获得的数据为:

    {"CREATEDATE":"2018-04-22T16:00:00.000+0000","ID":"se","NAME":"sadfe","PARENT_ID":"aas333"}
    

     在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。

    使用 resultType="map" 会默认使用键值对来存储,键值对的键值会与数据库的字段完全相同.

    2.第二个的返回值类型为 resultType="com.luozhen.entity.SysDepartment" ,其获得数据为:

    {"id":"se","name":"sadfe","createdate":"2018-04-23 00:00:00","parentId":null}
    

    你会发现数据库与实体之间不区分大小写进行匹配,但是如果数据库字段中含有特殊符号,则两者之间无法进行匹配,返回的数据为空.

    3.第三个的返回值类型为 resultMap="BaseResultMap" ,其返回的数据为:

    {"id":"se","name":"sadfe","createdate":"2018-04-23 00:00:00","parentId":"aas333"}
    

    第三种其实在xml文件中预先做了实体与数据库字段的映射:

    <resultMap id="BaseResultMap" type="com.luozhen.entity.SysDepartment">
        <id column="ID" jdbcType="VARCHAR" property="id" />
        <result column="NAME" jdbcType="VARCHAR" property="name" />
        <result column="CREATEDATE" jdbcType="TIMESTAMP" property="createdate" />
        <result column="PARENT_ID" jdbcType="VARCHAR" property="parentId" />
    </resultMap>
    

    所以在输出时会进行映射匹配.

    ps:有人会问关于时间格式的问题,第一种的时间格式是直接从数据库中提取出来,没有做任何的处理,而第二种和第三种是使用SpringBoot默认的jackson做了处理. 

    两种生活,一种燃烧,一种腐烂。
  • 相关阅读:
    树莓派研究笔记(2)-- 安装Nginx 服务器,PHP 和 SQLite
    树莓派研究笔记(1)-- 安装Mono
    Qemu虚拟机 玩树莓派最新版系统 (截止2017-04-10)
    CLRInjection
    CLRMonitor
    Xamarin Mono for VS开发窗体标题(Title)乱码解决方案
    精美3D中国象棋
    怀旧系列(5)----大学时代的疯狂
    怀旧系列(4)----文曲星编程GV-Basic
    怀旧系列(3)----Pascal
  • 原文地址:https://www.cnblogs.com/yuanmo396022993/p/9115726.html
Copyright © 2011-2022 走看看