[个人笔记]Mybatis

mysql登录 password ‘root’

1.三层架构

表现层:

用于展示数据的

业务层

是处理业务需求的

持久层

是和数据库交互的

2.持久层技术解决方案

jdbc技术
Connection
PreparedStatement
ResultSet
Spring的JdbcTemplate
Spring中对jdbc的简单封装
Apache的DBUtils
也是对Jdbc的简单封装
JDBC是一个规范而不是一个框架;spring和apache的都只是一个工具类 不是框架

3. mabatis概述

是一个基于java的持久层框架,内部封装了jdbc
内部封装了jdbc操作的很多细节,开发者只需要关注sql语句本身,而不需要关注注册驱动,创建链接等过程
他实现了orm(object relational mapping对象关系映射)思想 实现了结果集的封装

4. mybatis hello world

  1. 配置mybatis核心配置文件 需要加上时区设置serverTimezone=UTC
    在这里插入图片描述

  2. 编写mybatis工具类 下图中有一个错误
    在这里插入图片描述

  3. 编写代码
    实现类
    属性和列表的属性相同,并且有相关的get,set方法和tostring方法
    dao接口
    在这里插入图片描述

接口实现类在这里插入图片描述

  1. 测试:
    在这里插入图片描述可能遇到的问题:配置文件没有注册直接放在resources里面;绑定接口错误 命名空间出错,返回类型需要写全路径。
    步骤
    工具类 配置文件 实体类(接受对象) 接口 xml写获取的方法

5. 增删改查

注意 增删改需要提交事务 sqlsession.commit()
在实现接口的xml文件中,namspace就是对应的接口的全路径文件名
id是要实现的方法名,type写全路径 内容是具体的查询命令
查询特定:
传入参数使用parameterType 限定类型,然后在下方命令中用#{}写入参数;在这里插入图片描述
增加 在这里插入图片描述

修改在这里插入图片描述

删除在这里插入图片描述

注意点:
resource中绑定mapper路径要用/;namespace中要用.

使用map进行查找,把参数type变成map,然后上面参数中的#{id},就可以变成#{map的键}
1. 模糊查询 方法一 在java中使用通配符
在这里插入图片描述
在这里插入图片描述

  1. 方法二在sql中拼接使用

6. 配置解析

环境配置

配置环境可以有多套,更改default就可以完成切换
事务管理器有两种 jdbc和managed
数据源 ( 连接数据库dbcp,c3p0 druid)

有三种内建的数据源类型,也就是UNPOOLED(查询一次连接一次),POOLED UNDI
属性

可以使用properties属性来引用配置文件 进行动态替换,可以在典型的java属性文件中配置,也可以通过properties元素的子元素来进行传递
编写一个配置文件在这里插入图片描述
在核心配置文件中引入在这里插入图片描述可以在内部加属性

类型别名
    <typeAliases><typeAlias type="" alias=""> </typeAliases>单个设置
    <typeAliases><package name=""> </typeAliases>   
    	扫描实体类的包,别名就是小写的类型
        	在实体类前面用@Alias注释可以自定义
设置
    cacheEnable
    lazyloading
    useGeneratekeys
    mapUnderscoreToCamelCase  自动驼峰命名转换
    日志选择
映射器
    方式一 resource=
    方式二 使用class类型绑定
        接口和mapper配置文件需要同名并且在通过一个包下

    方式三 使用扫描包进行注入
        和上面的一个 也是需要同名的,接口类的名称和配置文件的名称

7 resultmap结果集映射

解决属性名和字段名不一致的问题
可以直接起别名在这里插入图片描述

更好用的是使用resultMap在这里插入图片描述

8 日志

8.1 日志工厂 在核心配置文件中进行配置

slf4j

log4j 需要掌握

什么是log4j

是一个apache的开源项目,可以控制日志信息输送的目的地是控制台,文件或者gui组件
可以空值每一条日志的输出格数
定义每一条日志信息的级别,能够更加细致的控制日志的生成过程
通过一个配置文件来灵活的进行配置,而不需要修改应用的代码

使用
  1. 导入包在这里插入图片描述

  2. log4j.properties在这里插入图片描述

  3. 配置log4j为日志的实现 在mybatis配置中在这里插入图片描述

  4. log4j的实现
    直接测试运行

简单使用

            1 在要使用的地方导包 apache 的log4j
            2 日志对象  static Logger logger=Logger.getLogger(test.class);
            3 日志级别   info debug error

stdout_logging 掌握

标准日志输出在这里插入图片描述

9 分页

9.1 limit 分页:

    select * from user limit from,end   如果只给了一个参数 那么就是数量

9.2 RowBounds实现分页 性能较差 不建议使用

在代码中 sqlsession.celectList(“方法名(全限定)” )重载实现在这里插入图片描述
分页插件 mybatis pagehelper 了解即可

10 使用注解开发

  1. 在接口中直接使用注解来完成在这里插入图片描述

  2. 在核心配置文件中绑定接口在这里插入图片描述

    简单的可以这样做 最好还是要用xml文件来进行配置使用 底层使用的主要就是反射

10.2 mybatis执行流程

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

10.3使用注解完成增删改查

在sessionfactory中opensession设置参数为true就可以完成事务的自动提交
使用注解的时候参数的注入在这里插入图片描述

接口的绑定不能忘记

#{}和${}的区别

#{}相当于占位符 会自动对传入的字符串数据加以对单引号,可以避免sql注入
#{}可以接受简单类型值或者pojo属性值
${}传入的数据直接显示在生成的sql中,就是一个简单的拼接 order by ${id},如果传入的值是id,则解析成的Sql为order by id。

11 lomlok

how to use

  1. 在idea中安装插件

  2. 导入架包在pom.xml中

  3. 注解在类之前
    @data 包含有参无参构造函数,getset方法,hashcode,tostring,equals
    显式写了有参的话,默认就没有无参,需要显示注明

    a

12 多对一 、一对多

多表查询 多对一

根据查询嵌套处理在这里插入图片描述
在这里插入图片描述

按照结果嵌套处理
在这里插入图片描述

一对多查询

在这里插入图片描述

方法二
在这里插入图片描述

javatype和oftype:
    oftype用来指定映射到list或者集合中的pojo的类型,泛型中的约束类型
    javatype用来指定实体类中属性的类型

13 动态sql

根据不同的条件生成sql
if在这里插入图片描述

13.1 一些语法

  1. trim(where set)
    where
    在这里插入图片描述

set是在更新的时候使用的,用来动态包含需要更新的列,而舍弃其他的
在这里插入图片描述
trim
在这里插入图片描述
2. choose、when、otherwise
3. 在这里插入图片描述

  1. foreach
    应用场景
    对一个集合进行遍历,通常是在构建in条件语句的时候 一般不需要用取index下标
    在这里插入图片描述

实际使用
在这里插入图片描述

测试
在这里插入图片描述

SQL片段

    有的时候,会将一些公共的部分抽取出来方便复用
    使用sql标签抽取公共的部分,在需要使用的地方用include标签引用
    注意事项:最好基于单表来定义sql片段    不要使用where标签

14 缓存

14.1 一级缓存

也叫本地缓存 sqlsession 默认开启 在一个sqlsession期间有效,相当于一个map
在和数据库的同一次会话期间查询到的数据会放在本地缓存中
之后如果需要获取相同的数据,直接从缓存中取 而不是再去查询数据库

缓存失效的情况
更新完数据(增删改操作可能会改变原来的数据)
查询不同的mapper
手动清理缓存 sqlsession.clearCache()

14.2 二级缓存

二级缓存的开启只需要在xml中写一个
在这里插入图片描述
在这里插入图片描述

需要将实体类序列化,否则会报错
二级缓存在同一个mapper中有效
所有的数据都会先放在一级缓存中
只有当绘会话提交的时候或者关闭的时候才会被提交到二级缓存中

14.3 缓存原理

在这里插入图片描述

14.4 ehcache的使用

    导包 mybatis-ehcache
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值