3、配置解析

1、核心配置文件

2、环境配置(environment)
3、属性(properties)
可以通过properties属性来实现引用配置文件
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置
编写一个配置文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&serverTimezone=Asia/Shanghai
username=用户账号
password=用户密码

在核心配置文件中引入

   <!--引入外部配置文件-->
<properties resource="config.properties">
</properties>

另外一种形式

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&serverTimezone=Asia/Shanghai <!--引入外部配置文件-->
<properties resource="config.properties">
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>

4、类型别名(typeAliases)

  • 类型别名是为java类型设置一个短的名字
  • 存在的意义仅在于用来减少类完全限定名的冗余

在核心配置文件中

    <!--可以给实体类起别名-->
<typeAliases>
<typeAlias type="com.zheng.pojo.User" alias="User"/>
</typeAliases>

也可以指定一个包名,Mybatis会在包名下面搜索需要的JavaBean:比如:扫描实体类的包,它的默认别名就为这个类的类名,首字母小写

    <!--可以给实体类起别名-->
<typeAliases>
<package name="com.zheng.pojo"/>
</typeAliases>
  • 实体类比较少的情况下,使用第一种方式
  • 实体类多,建议使用第二种

在mapper.xml文件中

    <!--查询用户通过id-->
<select id="selectUserById" resultType="User">
select * from mybatis.user where id=#{id}
</select>

5、映射器(mappers)
MapperRegistry:注册绑定我们的Mapper文件:
方式一、

  <mappers>
<!--每一个mapper.xml文件都需要在mybatis核心配置文件中被注册-->
<mapper resource="com/zheng/Dao/UserMapper.xml"/>
</mappers>

方式二、使用class绑定注册

    <mappers>
<!--每一个mapper.xml文件都需要在mybatis核心配置文件中被注册-->
<mapper class="com.zheng.Dao.UserMapper"/>
</mappers>

注意(使用class和包注意点):

  • 接口和它的Mapper配置文件必须同名!
  • 接口和它的Mapper配置文件必须在同一个包下

方式三、使用扫描包进行注入绑定

    <mappers>
<!--每一个mapper.xml文件都需要在mybatis核心配置文件中被注册-->
<package name="com.zheng.Dao"/>
</mappers>

6、生命周期和作用域
作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。

1、SqlSessionFactoryBuilder

  • 一旦创建了SqlSessionFactory,就不再需要它了
  • 局部变量
    2、SqlSessionFactory
  • 说白了可以想象为:数据库连接池
  • SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例
  • SqlSessionFactory 的最佳作用域是应用作用域
  • 最简单的就是使用单例模式或者静态单例模式
    3、SqlSession
  • 连接到连接池的一个请求
  • SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域
  • 连接之后要赶紧关闭,否则资源被占用

后端框架的学习----mybatis框架(3、配置解析)的更多相关文章

  1. 后端框架的学习----mybatis框架(5、分页)

    七.分页 简单使用 1.在要使用Log4j的类中,导入包import org.apache.log4j.Logger; 2.日志对象,参数为当前类的class static Logger logger ...

  2. 后端框架的学习----mybatis框架(6、日志)

    六.日志 如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的帮手 setting设置 <settings> <setting name="logImpl" ...

  3. 后端框架的学习----mybatis框架(9、多对一处理和一对多处理)

    9.多对一处理和一对多处理 #多对一 <!--按照结果集嵌套查询--> <select id="getAllStudent1" resultMap="S ...

  4. 后端框架的学习----mybatis框架(8、lombok)

    8.lombok #测试环境搭建 1.导入lombok 2.新建实体类Teacher,Student 3.建立mapper接口 4.建立mapper.xml文件 5.在核心配置文件中绑定注册mappe ...

  5. 后端框架的学习----mybatis框架(7、使用注解开发)

    7.使用注解开发 1.注解在接口上实现 /** * 查询用户 */ @Select("select * from user") public List<User> ge ...

  6. 学习mybatis框架>从零开始学JAVA

    目录 学习mybatis框架 mybatis框架的介绍 什么是mybatis框架 为什么要使用mybatis框架 mybatis的优点 Mybatis框架环境搭建 去官网下载jar包 创建一个普通的j ...

  7. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  8. 深入学习Mybatis框架(二)- 进阶

    1.动态SQL 1.1 什么是动态SQL? 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句. 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句.使用动态SQ ...

  9. 深入学习Mybatis框架(一)- 入门

    1.什么是Mybatis? Mybatis是一个优秀持久层框架,提供了对数据库的一系列操作(增删改查).Mybatis可以避免重复的写JDBC代码,让我们以较少的代码实现对数据库的操作,从而提高开发效 ...

随机推荐

  1. Apache Hudi vs Delta Lake:透明TPC-DS Lakehouse性能基准

    1. 介绍 最近几周,人们对比较 Hudi.Delta 和 Iceberg 的表现越来越感兴趣. 我们认为社区应该得到更透明和可重复的分析. 我们想就如何执行和呈现这些基准.它们带来什么价值以及我们应 ...

  2. [GYCTF2020]Ezsqli-1|SQL注入

    1.打开界面之后在输入框进行输入测试,分别输入1.2.3.'等字符,结果如下: 2.看到bool(false)这里我想到了bool注入,因为之前做过这道题:https://www.cnblogs.co ...

  3. Python基础之list和tuple的使用

    list和tuple的使用 list Python内置的一种数据类型列表:list list是一种有序的集合,可以随身添加和删除其中的元素. 比如列出办理所有同学的名字,就可以用一个list表示: & ...

  4. Mysql 实现数据库读写分离

    Amoeba+Mysql实现数据库读写分离 一.Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明. ...

  5. java学习第三天常用类.day11

    工具类如何设计,在开发中有两种设计: 工具方法:静态方法的使用 非静态的方法使用: 使用单列模式,为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 保证在整个应用中某一个类有且只有一个实例(一 ...

  6. Excelize 2.4.0 正式版发布, 新增 152 项公式函数支持

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  7. [RootersCTF2019]I_<3_Flask-1|SSTI注入

    1.打开之后很明显的提示flask框架,但是未提供参数,在源代码中发现了一个git地址,打开之后也是没有啥用,结果如下: 2.这里我们首先需要爆破出来参数进行信息的传递,就需要使用Arjun这一款工具 ...

  8. 【C标准库】详解feof函数与EOF

    创作不易,多多支持! 再说此函数之前,先来说一下EOF是什么 EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束. 在C语言中,或更精确地说成C标准函式库中表示文件结束符. ...

  9. js实现多条件排序

    1.sort排序允许接受一个参数(函数),这个函数接受2个形参a,b,并且通过冒泡的方式比较.例子:Arr.sort((a,b) => a-b);   升序排列Arr.sort((a,b) =& ...

  10. CF-1675D. Vertical Paths

    题意:每次可以选择一条路径,要求这条路径中每个点都是上一个点的子节点,求最少需要几条路径将所有点走完 思路:将每个点有没有子节点判断出来,因为只有没有子节点的点需要新增一条路,所以需要路径的最小数目就 ...