zoukankan      html  css  js  c++  java
  • mybatis的入门(一)

    一、mybatis的介绍

      mybatis是Apache的一个开源项目ibatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

      mybatis是一个非常优化的持久层框架。它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

      Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

    二、使用JDBC操作数据库的问题

      在介绍mybatis的使用前,我们先来看一下使用JDBC操作数据库存在哪些问题,然后再介绍mybatis有哪些优势。下面通过代码演示JDBC操作数据库。

    2.1 创建mysql数据库,导入测试数据

      

    2.2 创建工程

      开发工具:eclipse

      JDK:1.8

    2.2.1创建一个Java工程

      

    2.2.2 导入mysql的数据库驱动包,我的驱动包位置如下:

    在工程下面新建lib文件夹,并将mysql的驱动包放到lib文件夹下,并添加到build path 中:

    上面的准备工作做完之后,下面我们开始编写代码:

    2.2.4 JDBC操作数据库的步骤

    1. 加载数据库驱动
    2. 创建并获取数据库连接
    3. 创建jdbc statement 对象
    4. 设置sql语句
    5. 设置sql中使用的参数(我们这里使用 preparedStatement对象)
    6. 通过statement执行sql并获取结果
    7. 对sql执行的结果进行解释处理
    8. 释放资源(connection、preparedstatement、resultSet)

    2.2.5JDBC程序代码:

     1 package mybatis_study;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.PreparedStatement;
     6 import java.sql.ResultSet;
     7 
     8 public class JdbcDemo {
     9     private static final String url = "jdbc:mysql://localhost:3306/mybatisstudy";
    10     private static final String user = "root";
    11     private static final String password = "root";
    12     static Connection conn = null;
    13     static PreparedStatement stat = null;
    14     static ResultSet resultSet = null;
    15     
    16     public static void main(String[] args) {        
    17         try {
    18             //加载mysql驱动
    19             Class.forName("com.mysql.jdbc.Driver");
    20             //获得数据库连接
    21             conn = DriverManager.getConnection(url, user, password);
    22             //获得statment
    23             String sql = "select * from user where id = ?";
    24             stat = conn.prepareStatement(sql);
    25             //设置查询条件
    26             stat.setString(1, "27");
    27             //执行查询sql
    28             resultSet = stat.executeQuery();
    29             while (resultSet.next()) {
    30                 System.out.println(resultSet.getString("id") + " " + resultSet.getString("username"));
    31             }
    32         } catch (Exception e) {
    33             e.printStackTrace();
    34         }finally {
    35             if(conn != null){
    36                 try {
    37                     conn.close();
    38                 } catch (Exception e) {
    39                     e.printStackTrace();
    40                 }
    41             }
    42             if(stat != null){
    43                 try {
    44                     stat.close();
    45                 } catch (Exception e) {
    46                     e.printStackTrace();
    47                 }
    48             }
    49             if(resultSet != null){
    50                 try {
    51                     resultSet.close();
    52                 } catch (Exception e) {
    53                     e.printStackTrace();
    54                 }
    55             }
    56         }
    57     }
    58 }

    执行结果为:

    上面使用JDBC的原始方法(未经封装)实现了查询数据库记录的操作。

    三、总结JDBC操作数据库的问题

      1.数据库连接创建、释放频繁造成系统资源浪费,从而影响系统的性能,使用数据库连接池可以解决此问题。

      2.sql语句在代码中硬编码,造成代码不易维护,实际应用中sql语句的变化比较大,sql语句变动需要更改java代码。

      3.使用preparedstatement向占位符中传参数存在硬编码的问题,实际应用中,sql语句的where条件不一定,有可能变多也有可能变少,修改sql语句也需要修改代码,造成系统不易维护。

      4.对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库对象封装成pojo对象解析会比较方便。

    上面是对JDBC操作数据库进行了复习,并对其进行分析,总结了JDBC操作数据库的问题,下篇文章开始介绍mybatis持久层框架的使用。

  • 相关阅读:
    -for循环案例(下)
    for循环案例(上)
    for循环
    判断语句案例
    判断语句
    操作符优先级
    windows 下安装图片标注软件 labelling和出错解决
    tf-faster rcnn
    目标检测——Faster R-CNN 详解、Pytorch搭建、训练自己的数据集
    java idea 配置安装
  • 原文地址:https://www.cnblogs.com/lwjnicole/p/8351730.html
Copyright © 2011-2022 走看看