栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1-5 开发MyBatisUtils工具类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1-5 开发MyBatisUtils工具类

说明:正式进入项目项目开发环节,搭建基础架构,作为第一部分完成与数据库代码的封装

目录

 

一 搭建基础架构

1 完成与数据库代码的封装


一 搭建基础架构

1 完成与数据库代码的封装

增加MyBatisUtils框架的依赖

引入mysql的jdbc驱动

 引入junit单元测试及logback日志输出组件

 创建mybatis-config.xml

加上声明和dtd

 开启驼峰命名转换

描述与环境配置相关的选项:

dev代表开发环境

事务管理器选择jdbc

DataSource type 代表采用什么方式进行连接的管理输入POOlED代表采用连接池的形式管理

设备驱动类的名字为driverClassName 引入jdbc驱动类 

url代表链接字符串 

用户名 username

密码 password


        
            
            
                
                
                
                
                
                
            
        
    

加载xml文件 新增子包 utils代表工具类

 新增MybatisUtils用于加载xml文件,并且提供一些数据处理的方法

通过静态变量声明一个sqlSessionFactory工厂类

通过static静态块对其进行初始化

通过javaio中的reader读取xml文件,形成字符的输入流,通过SqlSessionFactoryBuilder传入reader

构建出sqlSessionFactory对象

捕捉异常

初始化过程中的异常

            //利用静态块在初始化类时实例化sqlSessionFactory
    static {
        Reader reader = null;
        try {
            //读取mybatis-config.xml
            reader = Resources.getResourceAsReader("mybatis-config.xml");
            //构建SqlSessionFactory
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            //初始化错误时,通过抛出异常ExceptionInInitializerError通知调用
            throw new ExceptionInInitializerError(e);
        }

初始化后额外增加两个方法

 打开会话和关闭会话,每一次都要手动开启和关闭,如果有一个步骤遗忘后果都非常严重。为了解决这个问题,我们可以对打开和关闭进行封装,使其自动开启,那么如何书写呢?那就要用到之前学习的lambda表达式以及函数式接口。

写一个简单的执行查询方法

Function是我们之前学习的函数式接口要求有两个泛型

第一个代表传入的参数是什么 传入sqlsession

第二个代表返回值是什么 传入object

参数名定义为func

 执行前获取对应的session对象,通过opensession获取session对象

 最核心的一句话,传入sqlsession参数,返回

我们要执行关闭语句,但这并不靠谱,因为在apply方法运行过程中会报异常,出现异常就会中断停止执行接下来的语句。导致数据库泄露无法关闭。

为了确保一定会被执行到,要利用try对其进行包裹,用finally直接调用sqlsession方法来进行关闭

try catch finally中catch块是可以被忽略的捕捉后无论异常还是怎样都会执行finally的关闭操作

 executeQuery用于执行查询,但没有规定执行什么查询?从那个表中进行查询?在这里都被封装成Function函数式接口,利用Function屏蔽执行查询的细节。用函数式接口自己定义来查询什么数据。

executeQuery方法最核心的处理就是保证查询前获取到Sqlsession对象并传入到当前的Function中,这样内侧的Function就可以通过sqlsession对象来进行操作了。

无论操作与否都会执行sqlsession.close()方法来完成数据库连接释放的工作,这就是函数式接口在项目中的经典应用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003424.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号