栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis

1.使用
  1. 配置总配置文件mybatis-config.xml,将数据库连接所需参数写入
  2. 创建一个接口interface1,定义一个抽象方法fun1。
  3. 创建一个mapper.xml实现接口interface1
  4. 在mapper.xml中实现方法fun1
  5. 在总配置文件mybatis-config.xml中注册mapper.xml
  6. 使用SqlSessionFactoryBuilder加载总配置文件mybatis-config.xml建造SqlSessionFactory,使用SqlSessionFactory生产SqlSession
  7. 此时生产出的SqlSession即为与数据库的连接对象,相当于jdbc中的connection。使用SqlSession获取接口interface1
  8. 使用接口对象interface1去调用其中被实现了的方法fun1

2.总配置文件 2.1properties

一般将数据源的信息单独放在一个properties文件中,然后用这个标签引入,在下面environment标签中,就可以用${}占位符快速获取数据源的信息

2.2settings

用来开启或关闭mybatis的一些特性,比如可以用<.settings name=“cacheEnabled” value=“true”/>来开启二级缓存;用<.settings name=“logImpl” value=“STDOUT_LOGGING”/>来开启日志

2.3typeAliases

在mapper.xml中需要使用parameterType和resultType属性来配置SQL语句的输入参数类型和输出参数类型,类必须要写上全限定名,可以用别名来简化书写,比如


    

之后就可以在resultType上直接写student,mybatis会根据别名配置自动找到对应的类。
当然,如果想要一次性给某个包下的所有类设置别名,可以用如下的方式


   

如此,指定包下的所有类,都会以简单类名的小写形式,作为它的别名

另外,对于基本的Java类型 -> 8大基本类型、包装类以及String类型,mybatis提供了默认的别名。基本数据类型为前面加_,如_int;包装类和String的别名为其简单类名的小写,如integer

2.4environments

用来配置数据源

2.5mappers

用来配置mapper.xml映射文件,这些xml文件里都是SQL语句

3.细节 3.1ParamType传入参数的处理
  • 无论传哪种参数给mybatis,他都会将参数转化为一个map:
  1. 传入基本类型:变量名作为key,变量值作为value 此时生成的map只有一个元素。

  2. 如果传入对象: 对象的属性名作为key,属性值作为value,生成的元素个数与属性个数相同。

  3. 如果传入List: "list"作为key,这个List是value (这类参数可以迭代,利用标签实现循环)

  4. 如果传入数组: "array"作为key,数组作为value(同上)

  5. 如果传入Map: 键值不变。

  • sql语句中若想获得该map中的value,可用#{key}
  • 为了方便的传送字段,我们可以将想传输的字段封装为一个map传给ParamType
3.2ResultMap的使用

在使用ResultType返回一个自定义的Javabean时,数据库中的字段可能会和javabean中字段不同。此时就需要用ResultMap代替ResultType了。


   
   
   
   
   

3.3多对一、一对多的处理

多对一:使用resultMap标签下的association标签去封装“一”


   
   
   
   
       
   

一对多:使用resultMap标签下的collection标签去封装“多”

   
       
       
           
           
           
       
   
3.4动态sql

主要为WHERe/SET+if来操作
其中where能智能省略and,set能智能省略逗号

3.5缓存

MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存

  • 默认情况下,只有一级缓存开启。
  1. 他是SqlSession级别的缓存,即每个数据库连接对象都有自己的一个缓存,由该对象执行的查询操作都会先往自己的缓存中查询。
  2. 若该对象执行了删改查类操作则会清空缓存
  • 二级缓存需要在Setting标签中开启和配置
  1. 他是基于namespace级别的缓存。即每个接口都有自己的缓存,该接口产生的所有查询操作都会先往自己的二级缓存汇总查询(二级>一级)
  2. 当该接口的一个数据库连接对象sqlsession关闭后,该对象会将自己的一级缓存提交到接口的二级缓存中
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号