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

最新文章

  1. 崔用志-微信开发-java版本
  2. 玩转Unity资源,对象和序列化(上)
  3. Spring MVC 中请求返回之后的页面没法加载css、js等静态文件
  4. 决策树算法实现(train+test,matlab) 转
  5. [转] Splay Tree(伸展树)
  6. 假设有两个包含整数的vector对象,编写一段程序,检验其中一个vector对象是否是另一个的前缀。
  7. Android 交错 GridView
  8. IIC 概述之24c系列存储器内存分析
  9. sp_makewebtask
  10. JavaScript高级程序设计:第十章
  11. 用for、while、do-while循环输出10句“好好学习,天天向上!”
  12. Windows系统如何使用sqlmap
  13. 如果以一个树状的形式返回一个UIView的所有子视图
  14. sqlserver2008 触发器备份 20170811
  15. 网络协议 5 - ICMP 与 ping:投石问路的侦察兵
  16. lumion的物体系统5.30
  17. SQL 查找存在某内容的存储过程都有哪些
  18. C. cltt的幸运数LCAdfs
  19. python --判断列表重复
  20. WIN7 环境下搭建 PHP7(64 位)操作步骤

热门文章

  1. OpenCV开发笔记(七十二):红胖子8分钟带你使用opencv+dnn+tensorFlow识别物体
  2. unordered_set
  3. MFiX-DEM中的串行碰撞搜索
  4. 输出5个大写英文字母的组合,并写入到txt文档中,随机数法。
  5. js-同步和异步
  6. 考场(NOIP/ICPC)沙雕错误锦集(大赛前必看,救命提分良药)
  7. rpm包的卸载与安装
  8. 面试重灾区——JVM内存结构和GC
  9. Java8 新特性 —— Stream 流式编程
  10. 手机运行Linux系统,可以办公,可以上网,太爽了!