MyBatis初始

举报
bug郭 发表于 2022/10/06 22:40:47 2022/10/06
【摘要】 大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN java领域新星创作者blog.csdn.net/bug…掘金LV3用户 juejin.cn/user/bug…阿里云社区专家博主,星级博主,developer.a...

大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

写在前面

我们前面学习了Spring那些框架,所以服务器端的逻辑处理已经学习的差不多了,而我们一个项目除了业务逻辑,还有就是最重要的就是前端传来的数据我们要通过数据库进行存储!而我们数据库和java代码进行连接的就是JDBC数据库接口!不过这样连接数据库的方式比较繁琐!而今天我们就学习MyBatis框架,简化数据库连接开发!

MyBatis定义

MyBatis是一款优秀的持久层框架,支持自定义SQL,存储过程以及高级映射! MyBatis几乎去除了所有JDBC代码及其参数的设置和获取结果集的工作!MyBatis可以通过简单的xml或注解来配置和映射原始类型,接口和java对象为数据库记录!
也就是说MyBatis是更简单完成程序和数据库交互的工具,更简单读取和操作数据库工具!

MyBatis作用

作为我们后端程序,我们程序由最重要的两部分组成!

  • 后端程序
  • 数据库

在这里插入图片描述

我们来回顾一下我们传统的java程序连接数据库代码操作!

  • 创建数据库连接池DataSource
  • 通过DataSource数据库连接池获取数据库连接Connection
  • 编写要执行的SQL含有占位符等
  • 通过ConnectionSQL获取数据库命令操作对象Statement
  • 替换占位符: 指定要替换的数据库字段类型,占位符索引以及要替换的值
  • 使用Statement执行SQL语句
  • 查询操作:返回结果集ResultSet,更新操作:返回更新的数据
  • 处理结果集
  • 释放资源
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC {
  //volatile 保证内存可见性
  static volatile DataSource dataSource;
  static String URL,User,Password;
  public TestJDBC(String URL,String User,String Password){
    this.URL = URL;
    this.User = User;
    this.Password = Password;
  }
  public static Connection getConnection() throws SQLException {
    //单例模式!
    if (dataSource == null) {
      //为空才会进来,不然直接返回连接即可
      //这里同一时刻可能有很多线程进入这里等待!
      //所以当一个线程进去后要再判断一下是否已经有线程创建了对象
      synchronized (TestJDBC.class) {
        //拿到锁后,要判断是否已经之前的线程创建了对象!
        if (dataSource == null) {
          dataSource = new MysqlDataSource();
          ((MysqlDataSource) dataSource).setURL(URL);
          ((MysqlDataSource) dataSource).setUser(User);
          ((MysqlDataSource) dataSource).setPassword(Password);
        }
      }
    }
    return dataSource.getConnection();
  }
  public static void close(Connection connection, Statement statement, ResultSet resultSet) throws SQLException {
    //注意顺序!
    if(resultSet!=null){
      resultSet.close();
    }
    if(statement!=null){
      statement.close();
    }
    if(connection!=null){
      connection.close();
    }
  }
}

import java.sql.*;

public class Main{
    public static void main(String[] args) throws SQLException {
        //获取到数据库连接对象!
        String URL = "jdbc:mysql://127.0.0.1:3306/java_2022?characterEncoding=utf8&useSSL=false";
        String User = "root";
        String Password ="123456";
        TestJDBC testJDBC = new TestJDBC(URL,User,Password);
        Connection connection = TestJDBC.getConnection();
        //编写SQL
        String sql = "select * from student where class_id=?";
        //获取Statement对象
        PreparedStatement statement = connection.prepareStatement(sql);
        //输入占位符数据,查询
        statement.setString(1,"101");
        //获取结果集
        ResultSet resultSet = statement.executeQuery();
        //查询class_id为 101的学生结果!
        while(resultSet.next()){
            String name = resultSet.getString(1);
            String class_id = resultSet.getString(2);
            System.out.println("name:"+name+" class_id:"+class_id);
        }
    }
}

在这里插入图片描述

在这里插入图片描述
显然这种方式十分繁琐!有很多重复的步骤!
我们学习MyBatis数据库操作将会大大简化!

MyBatis学习重点

  • 配置MyBatis开发环境
  • 使用MyBatis模式和语法操作数据库
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。