MyBatis是纸老虎吗?(一)

工作这么久,也换了不少工作,每次面试还像高中时参加考试一样,胆战心惊,不知所措。说好听点,是心理素质差,缺乏经验;说难听些,就是知识点掌握不到位,毫无勇气面对别人的考察。因此在我的认知中Spring及其相关组件、MyBatis、Redis等等都是我内心宏伟目标的绊脚石。可事实真是这样吗?二战期间,中国人民面临极端困难,有些人甚至出卖自己的尊严,倒戈敌人,可伟人坚定认为:一切反动派都是纸老虎!最终的事实证明了伟人的论断是完全正确的。那从本篇开始我们要梳理的MyBatis,究竟是阻碍我们前进的绊脚石、纸老虎呢,还是助力我们登上人生巅峰的垫脚石呢?我想,学完这些文章后大家就会有自己的答案了!

本篇文章继续沿用前面文章的写作思路:以案例开始,而后渐次展开,直至弄懂其本质为止。本篇文章我们会展示两个案例,它们分别为:使用手动方式完成MySQL数据库的操作;使用mybatis完成MySQL数据库的操作。

手动方式操作MySQL

本小节,我们以JDBC的方式操作MySQL数据库。本案例操作的数据表为tbl_user,其中的关键字段有:id、nick_name、user_name。下面是jdbc方式操作数据库的具体代码:

public static void handle() throws ClassNotFoundException, SQLException {

    // 1. 加载并注册 JDBC 驱动程序:
    // 根据不同版本的 MySQL Connector/J 可能会有所变化
    Class.forName("com.mysql.cj.jdbc.Driver");
    // 2. 建立数据库连接
    // 数据库地址、端口号和名称
    String url = "jdbc:mysql://localhost:3306/usermanage";
    // 数据库用户名
    String username = "root";
    // 数据库密码
    String password = "chinasoft202007";
    // 获取数据库连接
    Connection connection = DriverManager.getConnection(url, username, password);
    //
    connection.setAutoCommit(true);
    // 3. 创建 SQL 语句对象和结果集对象
    Statement statement = connection.createStatement();
    ResultSet resultSet = null;
    // 4. 执行查询操作
    // 表名和字段名
    String query = "SELECT * FROM tbl_user";
    resultSet = statement.executeQuery(query);
    // 处理查询结果
    while (resultSet.next()) {
        String
                id = resultSet.getString("id");
        String name = resultSet.getString("login_name");
        System.out.println("ID: " + id + ", Name: " + name);
    }
    // 关闭连接和释放资源
    if (connection != null) {
        try {
            connection.close();
        } catch (Exception e) {
        }
    }
    if (statement != null) {
        try {
            statement.close();
        } catch (Exception e) {
        }
    }
    if (resultSet != null) {
        try {
            resultSet.close();
        } catch (Exception e) {
        }
    }

}

从上述代码我们可以看出使用JDBC方式操作MySQL数据库大概可以分为六大步骤,它们分别为:

  1. 加载并注册 JDBC 驱动程序(Class.forName("com.mysql.cj.jdbc.Driver"))
  2. 建立数据库连接
  3. 创建 SQL 语句对象和结果集对象
  4. 执行查询操作
  5. 关闭连接和释放资源

mybatis方式操作MySQL

本小节,我们继续以mybatis的方式操作MySQL数据库。本案例操作的数据表同样是tbl_user。下面是mybatis方式操作数据库的具体代码:

ublic static void mybatis() throws IOException {

    // 默认是 resource 目录
    String resource = "config.xml";
    // 将文件读取为流
    InputStream inputStream = Resources.getResourceAsStream(resource);
    // 创建 SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    // 获取 SqlSession
    SqlSession session = sqlSessionFactory.openSession();
    // 查询数据总量
    Object obj = session.selectOne("org.com.chinasofti.springtransaction.UserDao.queryCountByCondition");
    // 查询表中的记录
    session.select("org.com.chinasofti.springtransaction.UserDao.queryByCondition", new ResultHandler() {
        @Override
        public void handleResult(ResultContext resultContext) {
            UserDto userDto = (UserDto) resultContext.getResultObject();
            System.out.println(userDto.getId() + "\t" + String.format("%-20s", userDto.getNickName()) + "\t" + String.format("%-35s", userDto.getUserName()));
            // System.out.println(String.format("%-20s", userDto.getUserName()));
        }
    });
    System.out.println("Totals\t" + obj.toString());

}

下面展示一下mybatis中config文件的具体配置,如果想了解详细的配置参数,可以参考官网:入门_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>

    <typeAliases>
        <typeAlias alias="user" type="org.com.chinasofti.springtransaction.User"/>
        <typeAlias alias="userDto" type="org.com.chinasofti.springtransaction.UserDto"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://数据库IP:端口/数据库名?serverTimezone=GMT"/>
                <property name="username" value="用户名"/>
                <property name="password" value="密码"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="user.xml"/>
    </mappers>

</configuration>

在梳理本篇文章的时候,找到了一篇介绍mybatis重点配置项的博客。如果有兴趣,可以参考一下,具体地址为:MyBatis 快速入门和重点详解-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器挖掘工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值