Mybatis学习

一、

1.第一个mybatis程序

层层递进,SqlSession用来执行sql语句,SqlSession是与数据库的一次会话。

通过SqlSessionFactory获取SqlSession

通过SqlSessionBuilder的build()方法获取SessionFactory

2.第一个程序就找了30分钟的错(悲惨)

核心配置文件配错了,把 在写url时,把 url多加了一个 斜杠

写一个斜杠就行,下方是正确写法。

3.第一个程序的细节

核心配置文件中的 mapper 中的 url与resource属性,建议用resource

4.事务管理机制深度剖析

在mybatis-config.xml 核心配置文件中,可以通过以下的配置进行mybatis事务管理

复制代码
<transactionManager type="JDBC"/>

type属性的值有两种:① JDBC ② Managed

当使用属性值 JDBC时,开启了事务,需要手动提交事务。

当使用属性值 Managed,表示事务交给别人管理,没有开启事务,自动提交。

下图是老杜剖析的:

5.JUnit在实际开发的使用

6.Mybatis 集成日志组件

注意:logback的作用域是 test ,因此只有在测试时,对应的日志文件才会生效。

mybatis的核心配置文件中可以配置 <settings>

mybatis内部 内置了日志实现 STDOUT_LOGGING ,这时需要在mybatis的核心配置文件中,配置一下<settings> .

要想使用其他日志组件,可以引入相关依赖,然后配置其必需的配置文件,不需要在mybatis-config中配置<settings>

.dtd 文档类型约束

二、进行简单的增删改查

1.增

pojo类的对象和map可以进行传值。

但要注意:pojo类的属性名要和#{ name } 中相同,而map的key要与#{key} 中的key相同。

后面会学到 开启驼峰命名的映射,这样传 pojo类就会特别方便。

下面是 传pojo类时会出现的问题:

没有对应的getter方法,即#{a}中的名字a 需要在pojo类中获得其对应的值,但 在pojo类中没有对应的 get()来获得,即没有getA()方法。

小汇总:

2.删

当只有一个占位符时,其内部的名字可以随便写。

3.改

改 其实比较简单,直接传进去一个pojo对象就行,但注意名字可能会不匹配,因为数据库中的表名,极有可能含有 下划线,这时就不能 通过 get()方法获取相应的值。

4.查

查询单条数据

如果没有 指定相应 resultType ,就不能用Car 类型的变量来接收

源码:如下

如果不指定resultType ,就会出现异常。

查询多条数据(特别注意)

对于查询多条数据,所要 指定的resultType 仍未Car 不需要写成List<>的形式。

5.命名空间

命名空间的引入是为了解决sql 的 id 冲突。

假如有一个CarMapper1.xml 里面配置 id =selectAll, 另一个配置文件同样配置 id=selectAll,这个时候,就需要命名空间来解决问题。

在调用sqlSession.select(命名空间.id ); ,以这种形式就会解决id冲突的问题。

相关推荐
喻米粒062217 分钟前
RabbitMQ消息相关
java·jvm·spring boot·spring·spring cloud·sentinel·java-rabbitmq
陈皮话梅糖@1 小时前
使用 Provider 和 GetX 实现 Flutter 局部刷新的几个示例
开发语言·javascript·flutter
hvinsion2 小时前
基于PyQt5的自动化任务管理软件:高效、智能的任务调度与执行管理
开发语言·python·自动化·自动化任务管理
Aphelios3802 小时前
Java全栈面试宝典:线程机制与Spring IOC容器深度解析
java·开发语言·jvm·学习·rbac
qq_529835353 小时前
装饰器模式:如何用Java打扮一个对象?
java·开发语言·装饰器模式
日暮南城故里3 小时前
Java学习------源码解析之StringBuilder
java·开发语言·学习·源码
Vitalia3 小时前
从零开始学Rust:枚举(enum)与模式匹配核心机制
开发语言·后端·rust
双叶8364 小时前
(C语言)虚数运算(结构体教程)(指针解法)(C语言教程)
c语言·开发语言·数据结构·c++·算法·microsoft
一个public的class5 小时前
什么是 Java 泛型
java·开发语言·后端
士别三日&&当刮目相看5 小时前
JAVA学习*Object类
java·开发语言·学习