您现在的位置是:首页 > 正文

Mybatis快速入门(二)

2024-04-01 04:40:50阅读 0

第四章 动态SQL

什么是动态SQL:同一个dao的方法,根据不同的条件可以表示不同的sql与语句,主要是where部分有变化,使用mybatis提供的标签实现动态sql的能力,主要讲if,where,foreach,sql,

使用动态sql的时候,Dao方法的形参使用Java对象。

什么时候使用动态sql?
在这里插入图片描述

内容列表

  • 动态sql-if
  • 动态sql-where
  • 动态sql-foreach
  • 动态sql-片段

if 标签

语法:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

where 标签

使用if标签时,容易引起sql语句语法错误,使用where标签解决if产生的语法问题。
使用where,里面是一个或多个if标签,当有一个if标签判断为true,where标签会转为where关键字附加到sql语句的后面,如果if没有一个条件为true,忽略where和里面的if。
where标签删除和他最近的or或者and。

语法:
在这里插入图片描述
在这里插入图片描述

foreach

使用foreach可以循环数组,list集合,一般使用在in语句中。
语法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

动态SQL之代码片段

标签用于定义SQL片段,以便其他SQL标签复用,而其他标签使用该sql片段,需要使用子标签。该标签可以定义SQL语句中的任何部分,所以子标签可以放在动态SQL的任何位置。

接口方法:
在这里插入图片描述
在这里插入图片描述

第五章 Mybatis配置文件

mybatis配置文件两大类:1.mybatis主配置文件;2.mybatis的mapper文件
1.mybatis主配置文件:提供mybatis全局设置的,包含的内容日志,数据源,mapper文件位置
2.mapper文件:写sql语句的,一个表一个mapper文件

settings部分

settings是mybatis的全局设置,影响整个mybatis的运行,这个设置一般使用默认值就行。

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

typeAliase别名

在这里插入图片描述

配置环境

environments:环境标签,可以配置多个
属性:default,必须是某个environment的id属性值
environment:表示一个数据库的连接信息
属性:id 自定义的环境标识。唯一值
transactionManager:事务管理器
属性:type表示事务管理器的类型
属性值:JDBC:使用Connection对象,由mybatis自己完成事物的处理
MANAGED:管理,表示把事物的处理交给容器实现(其他软件完成事物的提交回滚)
dataSourc:数据源,创建Connection对象,连接数据库
属性:type数据源的类型
属性值:POOLED,mybatis会在内存中创建PooledDataSource类,管理多个Connection连接对象,使用的连接池
UNPOOLED,不适用连接池,mybatis创建一个UNPOOLEDDataSource这个类,每次执行sql语句先创建connection对象再执行sql语句,最后关闭Connection
JNDI:Java的命名和目录服务

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <dataSource type="POOLED">
      <property name="driver" value="${driver}"/>
      <property name="url" value="${url}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
    </dataSource>
  </environment>
</environments>

使用数据库属性配置文件

需要把数据库的配置信息放到一个单独文件中,独立管理,这个文件扩展名是properties,在这个文件中使用自定义的key=value的格式表示数据。
在这里插入图片描述

mapper标签

使用mapper指定其他mapper文件的位置,mapper标签使用的格式有两种常用的方式
在这里插入图片描述

扩展

Pagehelper

mybatis通用分页插件
https://github.com/pagehelper/Mybatis-Pagehelper

maven坐标

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>最新版本</version>
</dependency>

加入plugin配置

在<>之前加入
<plugin>
<plugin interceptor="com.github.pagehelper.PageInterceptor"/>
</plugin>

在这里插入图片描述

网站文章

  • 自学一年Java能找到工作吗? 最新发布

    自学一年Java能找到工作吗? 最新发布

    从入门到找到工作大概6个月的时间吧。前提条件是每天都有大块的时间,并且可以处于高效的学习状态当中,。——如果这句话没有劝退大家继续看后面的内容。根据经验来说,我们先找到Java学习目的,一般都是以就业...

    2024-04-01 04:40:04
  • python自动化测试框架学习 之 HTMLtestrunner

    python自动化测试框架学习 之 HTMLtestrunner

    前几天大致搭了个基于python的自动化测试框架: 其中reports是用来放生成报告的====== HTMLtestrunner 是基于unittest单元测试的html的一个库。 首先安装,安装的时候有点特殊,一般的python库直接pip install ... 即可,安装这个的时候我用这种方式试着安装了下“testrunner”和“html-testrunner” 后面发...

    2024-04-01 04:39:58
  • layui分页样式设置居中

    layui分页样式设置居中

    layui数据表格

    2024-04-01 04:39:50
  • POST请求

    / 如果"POST"就会把这个请求的数据放在"请求数据包"-HTTPRequestMessage的请求体中。axios.post ("协议://ip:port/pathname",{参数对象})// ...

    2024-04-01 04:39:11
  • 计算机组成原理-数据的表示和计算

    1.进制的转换(1)进制的转换十进制转换为二进制(1)除2取余法(整数部分)对十进制的数不断除2求余,直到商为0。先求得的余数是二进制的低位(327)10转换:转换为 (101000111)2 第n次除2后的商 余数 163 1 81 1 40...

    2024-04-01 04:39:04
  • Hexo:博客框架10分钟搭建个人博客

    Hexo:博客框架10分钟搭建个人博客

    首先是先给大家打个招呼最近看网上看到了很多的的关于搭建博客的视频,我自己也学着自己搭建了一个博客"我自己的博客链接"(欢迎大家来我的博客跟我深入交♂流),今天我把搭建的过程记录下来写成博客,留下一个纪念,也可以顺便帮助那些想要搭建个人博客的小伙伴们,帮助他们搭建属于自己的博客主页啦,那么废话不多说,现在就开始吧。准备工作和环境搭建第一步安装node.js nodejs下载地址...

    2024-04-01 04:38:57
  • 二叉树相关公式

    二叉树的相关公式 1.一棵满二叉树,知道二叉树的层数c,求节点数m? 公式为:m=2^(c-1) ; 2.一棵满二叉树,知道二叉树的深度s,求节点数m? 公式为:m=2^s-1; 3.一棵满二叉树,知...

    2024-04-01 04:38:17
  • Linux常见的压缩包

    Linux常见的压缩包

    要创建一个归档文件,使用命令是:# lzma -c --stdoutexamplefile>examplefile.lzma虽然lzma是一款强大的工具,但其在Linux用户中的人气并不高。tar.g...

    2024-04-01 04:38:11
  • 产品日记--智慧矿山

    今天看到徐飞一篇关于创业的文章,又这么一句话:“一个没有创业并且成功过的人,做创业者的导师,到底能给创业者多大的帮助,是值得审慎考虑的。”

    2024-04-01 04:38:03
  • 【三十八】在Linux安装redis & 在Linux中的redis服务启动与停止 & 设置密码远程连接

    【三十八】在Linux安装redis & 在Linux中的redis服务启动与停止 & 设置密码远程连接

    11

    2024-04-01 04:37:56