动态 SQL

LxOwz 2019-08-27 原文

动态 SQL

2.1 SQL映射文件的几个顶级元素:

          2.1.1  mapper : 映射文件的根元素节点 只有一个属性namespace(命名空间)

          作用:用于区分不同的mapper ,全局唯一

          绑定DAO接口,即面向接口编程namespace的命名必须要跟接口同名。

          cache:  配置给定命名空间的缓存

          cache-ref: 从其他命名空间引用缓存配置

          resultMap: 用来描述数据库结果集和对象的对应关系。

          sql : 可以重用的SQL块,也可以被其他语句引用。

 

          insert: 映射插入语句。

          update : 映射更新语句

          delete:  映射删除语句

          select: 映射查询语句

          namespace的命名必须跟某个DAO接口同名,同属于DAO包下,习惯命名以实体类+Mapper.xml命名。    

         接口中的方法名与映射文件中的SQL语句id应一一对应

2.2 使用select完成单条件模糊查询

      <select  id=”getUserListByUserName”  resultType=”User”  parameterType=”string”>

              select  *   from   smbms_user   where  userName  like  CONCAT (‘%’,#{userName},’%’)

      <select>

    id为 getUserListByUserName 的映射语句,参数类型为 string 返回结果类型是User;            数据库的字段名和属性名不一致的情况下需要手动映射

    id: 命名空间中唯一的标识符,可以被用来引用这条语句。

   parameterType: 表示查询语句传入参数的类型的完全限定名或别名。

2.3 MyBatis多参数入参有三种方式:

       1.将查询条件封装成对象进行入参    parameterType=”User 类对象

       2. 使用Map集合 存储查询条件         parameterType=”Map” 返回集合

       3. 使用@Param注解实现多参数入参 :  public   int   updatePwd(@Param(“id”)Integer id,@param(“userPassword”) String pwd);

2.4使用resultMap完成查询结果的展现

     resultType 直接表示返回类型,包括基础数据类型和复杂数据类型。

      resultMap 是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个resultMap上,应用场景一般是:数据库字段信息与对象属性不一致或者需要做复杂的联合查询以便自由控制映射结果。

       resultType 属性和 resultMap 属性绝对不能同时存在,只能二者选其以使用。

 

2.5使用insert完成增加操作

     insert ,update ,delete 增,改,删,默认返回执行sql影响的行数,所以DAO层的接口方法的返回值一直设置为int类型,

     insert,update,delete 元素中均没有resultType属性,只有查询操作需要对返回结果类型,进行相应的指定

 MyBatis中参数入参,何时需要封装成对象入参,何时又需要使用多参数入参?

一般情况下,超过4个以上的参数最好封装成对象入参(特别是在常规的增加和修改操时字段较多,封装成对象比较方便)

2.6使用resultMap实现高级结果映射

    1.association : 映射到JavaBean的某个 复杂类型 属性    仅处理一对一的关联关系

       association的属性:javaType:完整java类名或者别名

                                       property:映射数据库列的实体对象的属性

   2. collection 这个属性是应该集合列表

 

2.7resultMap自动映射级别和MyBatis缓存

      <settings>

               <setting name=”autoMapperinigBehavior” value=”FULL”/>   //设置resultMap的自动映射级别为FULL(自动匹配所有)

      </settings>

       NONE : 禁止自动匹配

       PARTIAL (默认): 自动匹配所有属性

       FULL: 自动匹配所有

 MyBatis缓存

       1.一级缓存

          一级缓存是基于PerpetualCache( MyBatis自带) 的HashMap本地缓存,作用范围为session域内当session flush 或者 close之后,该session中所有的cache就会被清空

       2. 二级缓存

           二级缓存就是global caching 它超出session范围之外,可以被所有sqlSession共享,开启它只需要在MyBatis的核心配置文件 settings 中设置即可

发表于
2019-08-27 20:24 xie代码 阅读() 评论() 编辑 收藏

 

版权声明:本文为LxOwz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LxOwz/p/11420636.html

动态 SQL的更多相关文章

  1. java面试总结

    一、java的集合框架 HashMap、HashTable、CurrentHashMap的底层数据结构与区别? […]...

  2. SQL数据库基本操作,利用python将excel数据写入数据库,或从库中读取出来

    首先介绍一下SQL数据库的一些基本操作: 1创建 2删除 3写入 4更新(修改) 5条件选择 有了以上基本操作 […]...

  3. .net core 2.1—–Sql Server数据库初体验

    刚开始接触asp.net core,在学习的过程中遇到了一些小问题,在这里记录一下! 在我们项目的开发过程中, […]...

  4. SQL Server中DATEDIFF()函数的用法

    DATEDIFF ( datepart , startdate , enddate ) 释义:计算时间差; d […]...

  5. SQL Server2012数据库备份还原

    使用自带的Microsoft SQL Server Management Studio 参考:SQL Serv […]...

  6. SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库 […]...

  7. SQL Server 2008 R2安装图解教程

    一、下载SQL Server 2008 R2安装文件 cn_sql_server_2008_r2_enterp […]...

  8. SQL 配置管理器找不到了

    想用数据库建立远程连接,于是想把数据库改成IP地址连接,突然发现配置管理器不见了!!!!???百度了一下,有人 […]...

随机推荐

  1. Python新手爬虫三:爬取PPT模板

      爬取网站:第一PPT(http://www.1ppt.com/) 此网站真的良心 老样子,先上最后成功的源 […]...

  2. eclipse光标变成黑块变粗解决办法

    就是按下了键盘的insert按键...

  3. [NodeJs] 如何使用nodejs对base64进行编解码?

    [NodeJs] 如何使用nodejs对base64进行编解码? 将字符解析为8字节的二进制数,将3个8位二进制数 转为 4个6位二进制数,然后转为10进制根据A-Z,a-z,+,/找到对应位置,获取对应字母。最后3位字符得到4位base...

  4. CSS3.0:透明度 Opacity

    CSS opacity 这些年已经成为一种技术的趋势,让opacity在跨浏览器中兼容,也困扰着开发人员。今天 […]...

  5. Oracle查询表里的重复数据方法:

      一、背景   一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复 […]...

  6. mongodb安装失败与解决方法(附安装教程)

    安装mongodb遇到的一些坑 浪费了大量的时间 在此记录一下   主要是电脑系统win10企业版自带的防火墙 […]...

  7. 「硬核干货」总结IDEA开发的26个常用设置

    前言 程序员对待IDE都是虔诚的,经常因为谁是最好的IDE而在江湖上掀起波澜,曾经我也是。 后来我遇到了IDE […]...

  8. 以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)

    第一节 简介 欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链、星际文件系统(IPFS […]...

展开目录

目录导航