龙空技术网

MyBatis精讲(一)MyBatis基础配置及持久层连接创建代码实战

老K玩代码 197

前言:

此刻我们对“java建层”大体比较注意,我们都想要知道一些“java建层”的相关资讯。那么小编在网摘上搜集了一些关于“java建层””的相关资讯,希望小伙伴们能喜欢,我们一起来了解一下吧!

欢迎来到全网最完整的Java系列教程!!! 本教程将包含基础知识、进阶知识、常用框架等,循序渐进地分享Java中必须掌握的知识和技术。跟着老K的教程每天学习一点,你会发现入门Java没有想象中那么难。

在所有Java和数据库相关的框架中,说MyBatis是最基础和最重要的框架之一,想必没有人会有异议。

对于刚刚跨过Java基础大门的小伙伴来说,MyBatis虽然重要,但它的语法和配置与Java往往是最麻烦、最难以理解的部分。

本期,我们就一起从零开始,讲解如何使用MyBatis这个Java必备的持久层框架吧。

阅读可能晦涩,建议收藏,等有空或者有需要的时候拿出来查看。

一、MyBatis配置

首先,在IDEA中用maven新建一个项目即可,具体可以参考:

Java项目工程管理神器,构建框架必用 | Java常用框架精讲(二)

创建完项目后,得到的目录结构如下:

KoderMyBatis是我起的项目名称,实际情况会根据创建项目时的项目名称有所不同;target是项目的解码文件,新创建项目时不存在,需要运行过代码后才会生成。1. pom.xml的配置

和所有的maven项目一样,创建好项目后,我们首先要在pom.xml中配置要项目依赖:

<dependencies>    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis</artifactId>        <version>3.5.1</version>    </dependency>    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.47</version>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.12</version>    </dependency></dependencies>
pom.xmldependencies里,添加本次项目用到的三个依赖:mybatismysql以及junit;mybatis是持久层框架,用来管理java项目的数据交互;mysql下的mysql-connector-java是mysql向java开放的接口框架;junit是java常用的单元测试框架,如有了解详细只是可以跳转到这里:

Java工程师必学测试用例,手把手教你使用Junit|Java框架精讲(三)

如果同步下载遇阻,可以使用国内的镜像,之前的文章中有提到,有需要的小伙伴可以在之前的文章里找 ,链接放在文末了,这里就不展开了。2. config配置

mybatis除了需要在pom.xml里导入依赖库,还需要在resources目录下面创建一个配置文件,一般我们取这个配置文件的名称为mybatis-config.xml

mybatis-config.xml的路径位置在:./src/main/resources/下。

通常的配置信息如下:

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        ";><configuration>    <settings>        <setting name="mapUnderscoreToCamelCase" value="True"/>    </settings>    <environments default="dev">        <environment id="dev">            <transactionManager type="JDBC"></transactionManager>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url"                          value="jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8"/>                <property name="username" value="root"/>                <property name="password" value="123456"/>            </dataSource>        </environment>    </environments></configuration>
<!DOCTYPE>的标签是标准配置,来自于mybatis官网,地址:<configuration>是mabits的配置标签,自定义的所有配置都卸载这个标签下;<setting>中是参数设置,本例中通过mapUnderscoreToCamelCase设置了驼峰变量名的自动转换;<enviroments>由一个或多个<enviroment>组成,每个<enviroment>都配置一个环境变量,本例中只有一个<enviroment><transactionManager>中对数据库交互对象进行了设置,本例中将类型设置为JDBC;<dataSource>是用来配置信息源的,默认类型是线程池POOLED,属性driver,url,username,password 分别用来配置链接实例、数据库参数、用户名以及密码。此处的信息员属性(即dataSource > property标签)中的设置仅作为示例,项目中需根据自己实际情况配置,如出现连接失败,请重点查看信息源配置是否与当前项目吻合。

通过以上新建项目、配置pom依赖、以及mybatis-config的配置,我们已经完成了MyBatis使用前的必要配置了。

二、调用MyBatis实例

完成了基本配置后,我们接下来要完成MyBatis对mysql数据库的链接。

1. 创建实例的基本逻辑

我们先梳理一下MyBatis连接的基本逻辑代码:

import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.Reader;import java.sql.Connection;public class MyBatis {    public static void main(String[] args) {        // 1. 创建sqlSession工厂类        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        // 2. 通过工厂类创建session,并创建连结        SqlSession sqlSession = sqlSessionFactory.openSession();        Connection connection = sqlSession.getConnection();        // 3. 执行CRUD任务        // ...        // 4. 关闭session        sqlSession.close();    }}
SqlSessionFactory是创建SqlSession的工厂类,需要读取我们之前在mybatis-config.xml中配置的信息(即“一、MyBatis配置 - 2. config配置”中提及的部分)通过SqlSessionFactoryBuilderbuild方法可以创建SqlSessionFactory工厂类;通过SqlSessionFactoryopenSession可以开启一个应用会话,用来连接数据库;通过SqlSessiongetConnection可以创建数据库连接实例;任何crud完成后,都记得用close方法关闭session释放资源2. 优化代码逻辑,贴近实战

完成了思路的梳理,我们接下来在测试类中完善代码逻辑。

我们在./src/test/java/路径下创建MyBatisTest.java文件,文件代码如下:

import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import java.io.IOException;import java.io.Reader;import java.sql.Connection;public class MyBatisTest {    @Test    public void testSqlSessionFactory() throws IOException {        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        SqlSession sqlSession = null;        try {            sqlSession = sqlSessionFactory.openSession();            Connection connection = sqlSession.getConnection();            System.out.println(connection);        } catch (Exception e) {            e.printStackTrace();        } finally {            if (sqlSession != null) {                sqlSession.close();            }        }    }}
前几行import是依赖库的导入,基本操作不作解释了;@Testjunit的语法,表示当前方法是测试方法,对于测试用例和Junit有困惑的,可以到这里学习一下:

Java工程师必学测试用例,手把手教你使用Junit|Java框架精讲(三)

考虑到SqlSession存在获取失败的情况,所以用try...catch...包裹,捕获运行时异常的情况;sqlSession创建失败时,sqlSession.close()方法会执行失败,所以在finally代码块里进行判断在执行释放资源的操作。

以上就是MyBatis创建连接实例的基本操作,也是本文主要介绍的内容。

当然,MyBatis作为Java开发中重要的组成部分和通用的持久层框架,相关的知识肯定不止于此,本文仅作为抛砖引玉,后续会有更多相关和有趣的知识点讲解,敬请关注!

如果你对老K分享的内容有任何疑问,欢迎随时在评论区留言或者私信我。

正在学习的小伙伴记得给老K一个赞哦,你的支持是我持续输出课程内容最大的动力!

阅读推荐

我也分享过关于如何学习Java的文章,有需要的小伙伴可以点击下方链接获取:

IT大佬推荐!学习Java的最优路径 分享多个阶段的学习资源 建议收藏

结束语

我是专注于开发领域的@老K玩代码,会持续生产关于如何学习编程语言的优质内容。

如果你想学习Java编程,或者想精进你的Java编程能力,可以关注我。

如果你对开发、编程有任何疑问或者有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。

#头条创作挑战赛#

标签: #java建层