会话获取

SqlSessionFactory

最佳的获取方式就是使用Mybatis提供的资源类加载配置文件

调用会话工厂建造者实例的建造方法注入读取流

要注意的是建造者生成了了实例就可以不需要了

这里我们可以使用null赋值,让指针解除引用,引导GC回收建造者实例

获取的SqlSessionFactory有且只需要一个且一直存在

那就是单例模式,保持在这个运行的范围内即可

在获取SqlSession,加入事务开关按钮

我们在环境标签配置的事务管理类型是JDBC,默认是开启的

在封装获取方法openSession时,可以注入布尔参数,

以灵活设置是否关闭事务

MybatisUtil调整后的写法:

public class MybatisUtil {

    private static org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory;

    static {

        try{
// 核心配置文件名称
String config = "mybatis-config.xml"; // 读取核心配置 加载进内存为读取流对象
java.io.InputStream inputStream = org.apache.ibatis.io.Resources.getResourceAsStream(config); // 通过工场建造者获取了配置流对象,读取配置信息后,生成会话工厂实例
org.apache.ibatis.session.SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new org.apache.ibatis.session.SqlSessionFactoryBuilder();
sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); // 销毁,让引用失去指向,引导GC回收
sqlSessionFactoryBuilder = null;
} catch (Exception exception){
exception.printStackTrace();
}
} // 获取会话实例即可
public static org.apache.ibatis.session.SqlSession getSqlSession(boolean closeTransaction){
return sqlSessionFactory.openSession(closeTransaction);
}
}

执行SQL时自行选择是否关闭事务

    @Test
public void quickstartMybatis(){
SqlSession sqlSession = MybatisUtil.getSqlSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}

配置 Configure

我们快速入门使用的是直接写在核心配置里的方式

官方讲Properties时

允许我们可以使用properties标签导入外部properties文件

注入环境的连接参数使用【${key}】读取

properties标签本身也能支持连接参数的配置

但是这和环境内配置有什么区别?

然后在优先级别中的位置是最低的,

如果外部配置文件读取错误,一样报错

总而言之:可以写,但是没必要

官方还推荐了一种默认占位符的方式配置,

就是说可以写个默认配置

但是者需要properties标签开启设置

<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> <!-- 启用默认值特性 -->
</properties>

在这里我注释了用户密码,然后在配置里使用默认占位符设置

运行还是一样可行的

OGNL 表达式的三元运算符

(如: ${tableName != null ? tableName : 'global_constants'}

需要设置特定的属性来修改分隔属性名和默认值的字符。例如:

<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/> <!-- 修改默认值的分隔符 -->
</properties>

类型别名(typeAliases)

说明一下XML约束

如果不按照规定的顺序写配置标签,就会有这样的错误提示

这个提示已经说明了,各种配置标签的先后顺序

第一种别名:指定完整限定名,然后配置别名

不推荐使用这种,因为类数量太多,配置麻烦

第二种,限定所在包

该包下的类的别名即为小写,例如User -> user

每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。

比如 domain.blog.Author 的别名为 author

若有注解,则别名为其注解值。

映射器注册(mappers)

第一种,resource属性资源引用

要注意的是只能使用反斜杠作为分隔符,用点引用的路径会报错

好处是不用跟接口放在一起,随意使用

第二种通过接口完整限定名反射Mapper

必须和接口同一包下,且接口名和Mapper配置同名

第三种使用包扫描

这个问题和第二个一样,必须同包同名才有效

总而言之:

如果不希望Mapper配置和接口放在一起,

只能使用第一种资源引用方式,放在resoures的mapper中,或者自定义目录

第二种&第三种必须要同包同名

【Mybatis】06 Session获取 & 配置参数总结的更多相关文章

  1. Mybatis 学习---${ }与#{ }获取输入参数的区别、Foreach的用法

    一.Mybatis中用#{}和${}获取输入参数的区别 1.“#{}“和“${}”都可以从接口输入中的map对象或者pojo对象中获取输入的参数值.例如 <mapper namespace=&q ...

  2. python 使用getopt 获取配置参数

    在工程中特别是稍微大一点的项目基本上都会用到配置,就会涉及到配置文件的读取,配置参数的读取. 常用的解析配置文件的是configParser,解析命令行参数的则为getopt. getopt的参数可以 ...

  3. 开发笔记-19/10/28 -SpringBoot @Value 获取配置参数

    1. 在application.properties 定义参数 role.taskEvent :参数名称 4:值 ## ---------------------任务角色--------------- ...

  4. Crystal框架配置参数加载机制详解?

    前言 定义 配置参数定义的形式 配置参数文件定义在哪里? 配置参数加载的优先级 如何使用配置参数? 最佳实践 Jar项目中如何定义配置参数? War项目中如何定义或重载Jar包中的配置参数? 开发人员 ...

  5. Windows API获取系统配置文件的配置参数

    在Windows平台下获取系统配置文件(如:System.ini)的配置参数. 系统配置文件System.ini的内容如下: [SYSTEM] ServiceIP = 10.128.11.99:600 ...

  6. 【坑】Mybatis原始获取配置方式,获取配置失败

    错误环境: mysql版本:6.0.6 mybatis 3.4.1 idea 2017.1.2 maven 3.5.0 错误描述: 配置经路径见图1,classpath是java文件夹 获取配置的代码 ...

  7. 【SpringCloud】Gateway 配置全局过滤器获取请求参数和响应值

    [SpringCloud]Gateway 配置全局过滤器获取请求参数和响应值 实现Ordered接口getOrder()方法,数值越小越靠前执行,记得这一点就OK了. 获取请求参数RequestBod ...

  8. 【转】spring boot application.properties 配置参数详情

    multipart multipart.enabled 开启上传支持(默认:true) multipart.file-size-threshold: 大于该值的文件会被写到磁盘上 multipart. ...

  9. MyBatis笔记二:配置

    MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...

  10. 使用Mybatis的一些基本配置及Mybatis与数据库交互测试验证

    1.简介 什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.My ...

随机推荐

  1. python+k8s(基础,遇到的问题)

    python+k8s(基础,遇到的问题) CoreV1Api和ApiClient的区别 kubernetes.client.CoreV1Api kubernetes.client.ApiClient ...

  2. CSP-S2019 题解

    做了这套题,如果是让现在的我当时去考的话应该一共可以有 450 分,格雷码,括号树,树的重心都可以做,树上的数可以有 10 分,Emiya 至少可以有 76 分, 划分也可以有 64 分.看 OIer ...

  3. Javascript高级程序设计第二章 | ch2 | 阅读笔记

    HTML中的Javascript <script>元素 值得注意的几个关键字: async:立即开始下载脚本,仅对外部脚本有效.给脚本添加 async 属性的目的是告诉浏览器,不必等脚本下 ...

  4. 结构型模式(Structural Pattern)

    模式介绍 结构型模式(Structural Pattern)的主要目的就是将不同的类和对象组合在一起,形成更大或者更复杂的结构体.该模式并不是简单地将这些类或对象摆放在一起,而是要提供它们之间的关联方 ...

  5. Kotlin 数据类型详解:数字、字符、布尔值与类型转换指南

    Kotlin 数据类型 在 Kotlin 中,变量的类型由其值决定: 示例 val myNum = 5 // Int val myDoubleNum = 5.99 // Double val myLe ...

  6. ISCSI配置与挂载

    ISCSI介绍 iSCSI使用 TCP/IP 协议,来提供网络存储. 客户端挂载后,可以对其进行分区,进行格式化,就好像是安装在本机上的硬盘一样. 为了保证传输速率,通常采用光纤. 配置环境 Cent ...

  7. 【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。

    RVTools 是 VMware 生态系统中一个非常受欢迎且免费的 Windows 实用工具,用于收集并显示 VMware vSphere 环境中的相关信息,如虚拟机.主机及集群等相关配置.RVToo ...

  8. 【论文阅读】Trajectory-guided Control Prediction for End-to-end Autonomous Driving: A Simple yet Strong Baseline

    参考与前言 Summary: leaderboard 现存第一名 TCP,非常simple的设置 取得了很好的效果 论文链接:Trajectory-guided Control Prediction ...

  9. 实测14us,Linux-RT实时性能及开发案例分享—基于全志T507-H国产平台

    本文带来的是基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),Linux-RT内核的硬件GPIO输入和输出实时性测试及应用开发案例的分享.本次演示的开发环境如下: Windows开 ...

  10. MakeSense标注指南

    1.网址 https://www.makesense.ai/ 2.操作流程 2.1 导入 点击get started 点击drop images,上传图片 选择obeject detection 新建 ...