成都网站建设设计

将想法与焦点和您一起共享

(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

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

											

在这里插入图片描述

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

核心配置文件模板

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

映射文件模板

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

封装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,不是就以这种方式存储(大概是这么个意思~)

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

小结

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

简单回顾下

文章目录
  • 前言
  • MyBatis核心配置文件
    • environments
    • properties
    • typeAliases
    • mappers
  • MyBatis获取参数值的两种方式
    • 搭建一个mybatis工程
    • 核心配置文件模板
    • 映射文件模板
    • 封装SqlSessionUtils工具类并测试功能
    • #{}和${}
    • MyBatis获取参数值的五种情况
      • :one:单个字面量类型
      • :two:多个字面量类型的参数
      • :three:map集合类型的参数
      • :four:实体类类型的参数
      • :five:使用@Param标识参数
    • @Param源码分析
  • 小结

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

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:(Java)Mybatis学习笔记(二)-创新互联
新闻来源:http://chengdu.cdxwcx.cn/article/dghejp.html