(Java)Mybatis学习笔记(二)

前言

继续学习MyBatis核心配置文件章节,不负年华

MyBatis核心配置文件

核心配置文件中的 标签详解

environments

在这里插入图片描述

标签含义属性拓展
environments配置多个连接数据库的环境default:设置默认使用的环境id
environment配置多个连接数据库的环境id:表示连接数据库环境的唯一标识,不能重复
transactionManager设置事务管理方式type=JDBC/MANAGEDJDBC:表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理,事务的提交和回滚需要手动处理 MANAGED:被管理,例如Spring
dataSource配置数据源type=POOLED/UNPOOLED/JNDI :设置数据源的类型POOLED:表示使用数据库连接池缓存数据库连接 UNPOOLED:表示不使用数据库连接池 JNDI:表示使用上下文中的数据库连接
property数据库连接相关配置name value

properties

实际开发中,习惯将数据源的配置信息单独抽取成一个properties文件,然后引入

新建一个properties文件

在这里插入图片描述

为什么要用Resource Bundle来创建properties文件,这是个问题

看了官网的解释,我有了那么一丝明悟

Resource Bundle 翻译过来 资源包 或称 资源束

2020.3版本时官网的释义

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

用通俗的话来讲,Resources目录下用于存放配置文件,而部分配置文件可能文件特性相似(简单理解就是后缀名相同),就整合到一个目录下,方便找寻和管理(这是个人浅薄的理解

在这里插入图片描述

后缀名默认为 properties
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

typeAliases

就算起个别名,也最好见名识义

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

报错:元素类型为 “configuration” 的内容必须匹配 “(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)”

意思是configuration中的标签要按上述顺序书写

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

别名常以包为单位,将包以下所有的结果类型设置默认的类型别名,即类名不区分大小写

mappers

错误的建包示范

在这里插入图片描述
在这里插入图片描述
正确的建包示范
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以包为单位引入映射文件

要求:
1.mapper接口所在的包要和映射文件所在的包一致
2.mapper接口要和映射文件的名字一致

MyBatis获取参数值的两种方式

搭建一个mybatis工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pom文件中导入依赖

在这里插入图片描述

pom中添加packaging标签

项目产生的构件类型,例如jar、war、pom

项目打包类型:pom、jar、war

<packaging>pom</packaging> ---------> 父类型都为pom类型
<packaging>jar</packaging> ---------> 内部调用或者是作服务使用
<packaging>war</packaging>---------> 需要部署的项目

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"/>
			<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>
	<mappers>
		<mapper resource="org/mybatis/example/BlogMapper.xml"/>
	</mappers>
</configuration>

在这里插入图片描述

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

核心配置文件模板

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

映射文件模板

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

封装SqlSessionUtils工具类并测试功能

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

在这里插入图片描述

#{}和${}

MyBatis获取参数值的两种方式:${}#{}

  • ${}本质字符串拼接
  • #{}本质占位符赋值

${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号

#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号

MyBatis获取参数值的五种情况

1️⃣单个字面量类型

mapper接口方法的参数为单个的字面量类型

遇见一个问题,传递中文参数返回值为空(已解决)
在这里插入图片描述
在这里插入图片描述

在properties文件中的数据库url后追加?useUnicode=true&characterEncoding=utf8

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
通过测试知道大括号中的参数名可以任意,但建议与参数名保持一致
在这里插入图片描述
在这里插入图片描述
小结:可以通过${}#{}以任意的名称获取参数值,但需要注意${}单引号问题

2️⃣多个字面量类型的参数

在这里插入图片描述

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

mapper接口方法的参数为多个时

此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储

  • a>以arg0,arg1…为键,以参数为值
  • b>以param1,param2…为键,以参数为值

因此只需要通过#{}${}以键的方式访问值即可,但需要注意${}的单引号问题

3️⃣map集合类型的参数

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

若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储

只需通过#{}${}以键的方式访问值即可,但要注意${}的单引号

4️⃣实体类类型的参数

mapper接口方法的参数是实体类类型的参数

只需通过${}#{}以属性方式访问属性值即可,但需要注意${}的单引号问题

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

5️⃣使用@Param标识参数

mapper接口方法参数有多个

命名参数

使用@Param注解命名参数

此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储

  • a>以@Param注解的值为键,以参数为值
  • b>以param1,param2…为键,以参数为值

因此只需通过#{}${}以键的方式访问值即可,但要注意单引号问题

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

@Param源码分析

听懂了一小小小部分,就是判断存入的键是否是param1、param2,不是就以这种方式存储(大概是这么个意思~)

在这里插入图片描述
分析不下去了,太难了,太烧脑了~

小结

这章节学习的难度不算很大,也就有点小问题,但都解决了,也就是源码分析暂时解决不了,所以要好好学,好好看,到时候学成了,再回过头来看

简单回顾下


继续努力,赶往下一个知识点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值