Day14JavaWeb【Mybatis一】Jdbc回顾与Mybatis介绍

学习目标

  • 1、Mybatis的介绍
  • 2、Mybatis的入门
    a)使用jdbc操作数据库存在的问题 (回顾jdbc)
    b)Mybatis的架构
    c)Mybatis的入门程序 (重点)
  • 3、Dao的开发方法
    a)原始dao的开发方法 (了解)
    b)接口的动态代理方式 (重点)

Jdbc介绍

  • (1)案例: jdbc 做一个根据名称查询用户的操作
  • (2)什么是jdbc?
    Java Database Connectivity ,Java数据库连接 ,简称JDBC
    Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法
    (3)什么是数据库驱动?
    数据库提供商对JDBC接口的实现类,如mysql,oracle,sqlserver

//接口
public interface JdbcApi{
    
    
	public void update();
}

//接口不能直接创建对象
JdbcApi api = new JdbcApi();
api.update();

//Myql厂商
public class MysqlJdbc implements JdbcApi{
    
    
	public void update(){
    
    
		//Mysql写了代码
	}
}
MysqlJdbc api = new MysqlJdbc();
api.update();
//Oracle 厂商
public class OracleJdbc implements JdbcApi{
    
    
	public void update(){
    
    
		//OracleJdbc写了代码
	}
}
OracleJdbc api = new OracleJdbc();
api.update();

Jdbc操作数据库原理图

  • (1)Jdbc如何操作Mysql?
    》1 加载数据库驱动
    》2 创建并获取数据库链接
    》3 创建jdbc statement对象
    》4 设置sql语句
    》5 设置sql语句中的参数(使用preparedStatement)
    》6 通过statement执行sql并获取结果
    》7 对sql执行结果进行解析处理
    》8 释放资源(resultSet、preparedstatement、connection)
    在这里插入图片描述

Jdbc连接池原理图

  • (1)频繁创建连接,销毁连接造成极大资源开销
  • (2)连接池,即一个集合,可以管理连接对象
  • (3)有什么特点?
    》1 可以初始化指定数量的连接
    》2 可以指定集合的最大元素个数
    》3 可以申请连接池的连接
    》4 不用的连接可以放回连接池

在这里插入图片描述

Jdbc代码分析总结

  • (1) jdbc 做一个根据名称查询用户的操作 搜索
  • (2)初始化数据库
create database mybatis01;
use mybatis01;

drop table if exists `user`;
create table `user` (
  `id` int(11) primary key  auto_increment,
  `username` varchar(32) ,
  `birthday` date,
  `sex` char(1) ,
  `address` varchar(256)
) 
insert into `user` values ('1', '王五', '2014-07-10', '2', null);
insert into `user` values ('10', '张三', '2014-08-11', '1', '北京市');
insert into `user` values ('16', '张小明', '2015-07-10', '1', '河南郑州');
insert into `user` values ('22', '陈小明', '2016-07-10', '2', '重庆');
insert into `user` values ('24', '张三丰', '2019-07-10', '1', '天津');
insert into `user` values ('25', '陈小明', '2019-07-10', '1', '杭州');
insert into `user` values ('26', '王五', '2018-07-10', null, null);
  • (3)配置mysql驱动的依赖
    》创建maven工程,再创建web01模块
    》配置依赖
    pom.xml
 <properties>
    <mysql.version>5.1.32</mysql.version>
  </properties>
 <!-- MySql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>

(4)分析jdbc编写操作数据库代码的可改进地方
》1 频繁创建、释放数据库连接 ,性能开销大,没有自带连接池
》2 Sql语句写在java代码中 ,硬编码
》3 sql语句的where条件与占位符赋值没有写判断逻辑
》4 数据库记录需封装成pojo对象 User类 大量的编写 转换代码


public class TestJdbc {
    
    
    @Test
    public void test01() throws Exception {
    
    
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        // 加载数据库驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 通过驱动管理类获取数据库链接
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis01?characterEncoding=utf-8", "root", "123456");
        // 定义sql语句 ?表示占位符
        String sql = "select * from user where username = ?";
        // 获取预处理statement
        preparedStatement = connection.prepareStatement(sql);
        // 设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
        preparedStatement.setString(1, "王五");
        // 向数据库发出sql执行查询,查询出结果集
        resultSet = preparedStatement.executeQuery();//将sql发送给数据库
        // 遍历查询结果集
        while (resultSet.next()) {
    
    
            System.out.println(resultSet.getString("id") + "  " + resultSet.getString("username"));
        }
        // 释放资源
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }

}

Mybatis介绍

  • (1)Mybatis是什么?
    MyBatis 本是apache的一个开源项目iBatis,是一个基于Java的持久层框架,用来写dao
  • (2)Mybatis有什么特点?
    》1 最简单安装只要两个jar文件+配置几个sql映射文件,自带连接池
    》2 sql写在xml里,便于统一管理和优化
    》3 sql和代码的分离,提高了可维护性
    》4 提供映射标签,支持对象与数据库的orm字段关系映射
    》5 提供对象关系映射标签,支持对象关系组建维护
    》6 提供xml标签,支持编写动态sql

总结一句,重点在xml配置,很少写java代码。

Mybatis架构

  • (1)mybaits 是对jdbc的封装
  • (2)重点在配置文件xml
    在这里插入图片描述
  • (3)架构图
    在这里插入图片描述
1:核心 配置文件,放四大信息			
ip,port,username,password			
			
2:映射文件			
select			
update			
delete			
insert			
4:SqlSessionFactory			使用了工厂设计模式的生成session的对象
3:SqlSession对象,支持增删改查,连接			

猜你喜欢

转载自blog.csdn.net/u013621398/article/details/108766675
今日推荐