• 使用单个mybatis框架进行mysql数据库的连接和操作?


    使用单个mybatis框架进行mysql数据库的操作?

    简述

    先来说一下数据库连接的演变,刚开始的时候,最原生的连接并操作mysql数据库的办法是使用JDBC技术,这种技术相对来说写的源码比较多,比较繁杂;
    后来就出现了JDBCTmplate;
    再后来就出现了mybatis框架,mybatis框架进行mysql数据库操作还是比较简便的。

    可以去mybatis中文官网看一下最简单的连接示例,地址:https://mybatis.net.cn/getting-started.html

    连接并操作mysql数据库只有mybatis框架就可以了吗?

    不行。mybatis框架只不过是让操作数据库更加简便了而已,但是它内部并不能提供连接mysql数据库的jar包,如果我们想要连接mysql数据库,必须还要引入mysql驱动包,所以,正常情况下使用mybatis连接并操作数据库,需要两个jar包,如下图:
    在这里插入图片描述
    jar包依赖代码如下:

    <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.1</version>
            </dependency>
            <!-- MySql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    那么接下来就是怎样使用mybatis框架结合mysql驱动去连接并操作mysql数据库了?

    首先需要写一个mybatis的配置文件,如下图:
    在这里插入图片描述
    代码如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/kml"/>
                    <property name="username" value="root"/>
                    <property name="password" value="password"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="mapper/LogScriptMapper.xml"/>
        </mappers>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    然后写mapper.xml映射文件,这个文件的作用是定义sql语句,如下图:
    在这里插入图片描述
    代码如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.sh.game.mapper.LogScriptMapper">
        <select id="selectById" resultType="com.sh.game.DO.LogScriptDO">
            select * from log_script where id = #{id}
        </select>
    </mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    当然我们需要在本地mysql数据库里面建立一个数据库,并且在数据库里面建立一张表,这个过程就不演示了,这里看一下表结构,如下图:
    在这里插入图片描述

    mybatis并不是直接操作sql语句的,虽然我们在mapper.xml映射文件中已经写好了sql语句,但是我们不能直接操作,而是需要写一个与其名字相同的动态代理接口进行操作,如下图:
    在这里插入图片描述
    里面的每一个方法都对应一个sql语句,想要对数据库进行什么样的sql操作,我们直接调用动态代理接口LogScriptMapper中的方法就行。

    然后写一个与数据库对接的DO类,如下图:
    在这里插入图片描述
    最后,一切写好之后,就要进行最终的测试了,测试如下图:
    在这里插入图片描述
    代码如下:

    /**
     * @author xuan
     * @create 2023/10/19
     */
    public class Test01 {
        public static void main(String[] args) throws IOException {
            String rootPathOfMybatisConfig = "config/mybatis.xml";
            InputStream inputStream = Resources.getResourceAsStream(rootPathOfMybatisConfig);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            try (SqlSession session = sqlSessionFactory.openSession()) {
                LogScriptMapper logScriptMapper = session.getMapper(LogScriptMapper.class);
                LogScriptDO logScriptDO = logScriptMapper.selectById(1);
                System.out.println(logScriptDO);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    看一下输出结果,如下图:
    在这里插入图片描述

    至此,使用"mysql-connector-java连接数据库驱动和mybatis操作mysql数据库框架" 这两个优秀技术连接并操作数据库就完美成功了。

    注意更新操作,需要提交才能生效,如下图:
    在这里插入图片描述

  • 相关阅读:
    AMAZINGIC晶焱科技推出低操作电压ESD保护元件
    (21)语义分割--deeplabv1v2和v3
    IOS课程笔记[6] 基础控件
    搜索——flood fill
    LeetCode297:hard级别中最简单的存在,java版,用时击败98%,内存击败百分之九十九
    MyBatis使用动态SQL用法以及例题
    SpringBoot:yaml配置及语法、yml数据读取、多环境开发控制
    无人机航测技术的优势有哪些?
    嵌入式开发,如何防止设备被抄袭?
    嵌套for循环在外层循环和内层循环中使用两个Executors.newCachedThreadPool缓存线程池执行操作
  • 原文地址:https://blog.csdn.net/qq_45950109/article/details/133926805