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数据源

    <environments default="development-mysql">
<environment id="development-mysql">
<transactionManager type="JDBC"/>
<dataSource type="com.config.DruidDataSourceFactory">
<property name="url" value="${jdbc.jdbcUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>

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的呢?

Mybatis是如何封装Jdbc的?的更多相关文章

  1. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. MySQL JDBC事务处理、封装JDBC工具类

    MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...

  4. DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...

  5. 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入

    一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...

  6. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...

  7. Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库

    废话不多说,直接上源代码,最后有使用方法,当然,也可以作为普通公用类使用,只是封装成JAR更方便使用. package db.util; import java.io.BufferedReader; ...

  8. JDBC_13_封装JDBC工具类

    封装JDBC工具类 代码: import java.sql.*; /** * JDBC工具类,简化JDBC编程 */ public class DBUtil { //工具类中的构造方法都是私有的,因为 ...

  9. MyBatis封装JDBC具体实现

    关于xml等解析的工具基本均包含在org.apache.ibatis.builder包中,有包名可知基本使用建造者模式.这个包的主要功能两个: 1.解析XML配置文件和映射文件,xml子包中: 2.解 ...

随机推荐

  1. vue组件使用name属性来生成递归组件

    先来个简单的数据 1 lists = [{ 2 id: 1, 3 title: '第一层', 4 children: [{ 5 id: 3, 6 title: '第二层', 7 children: [ ...

  2. JAVA学习第一阶段(2)

    21. ArrayList类和LinkList类 注意:add,contains,remove,retain(取交集) 都可以+all表示对集合的操作 ArrayList c = new ArrayL ...

  3. sqlsugar入门(4)-修改源码支持多主键保存ISaveable

    1.查看其它接口发现少了一个最重要的SaveBuilder.此文件是存放sql模板,where条件,select解析,组装成tosqlstring的最后一个类. 添加文件 using System; ...

  4. cookie与session的概念与区别

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  5. FastThreadLocal 是什么鬼?吊打 ThreadLocal 的存在!!

    ThreadLocal 大家都知道是线程本地变量,今天栈长再介绍一个神器:FastThreadLocal,从字面上看就是:Fast + ThreadLocal,一个快的 ThreadLocal?这到底 ...

  6. eclipse关于新建工程找不到二进制文件的解决方法

    eclipse新建工程后先构建项目 然后右键工程,选择属性,选择c/c++ Build,选择Tool chain editor.中间的Current Toolchain改为Mingw Gcc.然后选择 ...

  7. 利用GitHub和Hexo打造免费的个人博客

    每个程序猿都需要一个个人博客,目前广泛出现在大家视野里的有CSDN.博客园.简书,但是他们却没有给用户一个专属的站点.一个好记的域名.你需要一个https://xxx.xxx.xxx/格式的网址,一个 ...

  8. 【老孟Flutter】6种极大提升Flutter开发效率的工具包

    老孟导读:本文介绍6种极大提升Flutter开发效率的工具包. [1] 强大的日志软件包 在开发 Flutter 的过程中打印日志是常用的调试方式之一,但 Flutter 内置的日志打印非常简单,下面 ...

  9. reids 入门

    1.reids 服务的安装有两种 1.1 exe文件安装,安装完成后,就直接在 "服务"列表中可以查看,并可以停止或启动 1.2 命令行安装:将文件解压至指定文件夹,CMD命令进入 ...

  10. 回流与重绘:CSS性能让JavaScript变慢?

    参考张鑫旭博客: http://www.zhangxinxu.com/wordpress/2010/01/%E5%9B%9E%E6%B5%81%E4%B8%8E%E9%87%8D%E7%BB%98%E ...