mybatis封装mysql_Mybatis是如何封装Jdbc的?

JDBC六个步骤

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

//1. 加载驱动

Class.forName("com.mysql.jdbc.Driver");

//2. 获取连接

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC", "root", "123456");

//3. 创建PreparedStatement 【设置参数】

ps = conn.prepareStatement("select * from user");

//4. 执行sql ==》executeXxx()

rs = ps.executeQuery();

//5. 遍历结果集

while(rs.next()) {

System.out.println(rs.getString(2)); // 数据库第2列数据

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}finally {

//6. 关闭连接

try {

rs.close();

ps.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

数据库连接池

问题1:频繁的建立连接释放连接,造成资源的浪费。

数据库连接池,用来解决建立与释放连接的问题。

但是数据库连接池有dbcp连接池,c3p0连接池,druid连接池,不可能为每一个连接池实现一种连接方式。所以使用DataSource实现隔离解耦。

public static ComboPooledDataSource dataSource = new ComboPooledDataSource();

// 通过C3p0 配置数据源 DataSource,以后想要使用其它的连接池,只需改动如何获取DataSource,不需要改动连接。

public static void dataSource(){

try {

dataSource.setDriverClass("com.mysql.jdbc.Driver");

dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/qianfeng?serverTimezone=UTC");

dataSource.setUser("root");

dataSource.setPassword("123456");

dataSource.setInitialPoolSize(3);

dataSource.setMaxPoolSize(10);

dataSource.setMinPoolSize(3);

dataSource.setAcquireIncrement(3);

} catch (PropertyVetoException e) {

e.printStackTrace();

}

}

// 通过数据源,获取连接 Connection

public static Connection conn() {

Connection conn = null;

dataSource();

try {

conn = dataSource.getConnection();

//Unknown system variable 'tx_isolation' : 可能原因是数据库版本太高,mysql-connector-java版本太低

//conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

在Mybatis中,配置druid数据源

Mybatis

关键技术点 SqlSession:执行Sql

String resource = "conf/mybatis-config.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

//2. SqlSessionFactoryBuilder

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

//1. 构建SqlSessionFactory

SqlSessionFactory factory = builder.build(inputStream);

//3. 构建session

SqlSession session = factory.openSession();

/** 第一种方式:以前原生的方式 */

//Student s = session.selectOne("com.shang.mybatis.mapper.StudentMapper.queryStudentById", 1);

//System.out.println(s);

/** 第二种方式:演变出来的*/

StudentMapper mapper = session.getMapper(StudentMapper.class); // mapperProxyFactory ==> mapper的代理对象

Student s = mapper.queryStudentById(1);

System.out.println(s);

MyBatis是如何封装JDBC的呢?

b005f056bcc34f35397d69a167d8efd9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值