2019独角兽企业重金招聘Python工程师标准>>>

mybatis学习笔记(1)-对原生jdbc程序中的问题总结

标签:mybatis


[TOC]


本文总结jdbc编程的一般步骤,总结这样编程存在的问题,并附上典型地jdbc示例demo

jdbc编程步骤

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

问题总结

1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。

设想:使用数据库连接池管理数据库连接。

2.将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

3.向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:将sql语句及占位符号和参数全部配置在xml中。

4.从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

设想:将查询的结果集,自动映射成java对象。

参考代码

package com.iot.mybatis.jdbc;//import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;/*** Created by Administrator on 2016/2/21.*/
public class JdbcTest {public static void main(String[] args) {//数据库连接Connection connection = null;//预编译的Statement,使用预编译的Statement提高数据库性能PreparedStatement preparedStatement = null;//结果集ResultSet resultSet = null;try {//加载数据库驱动Class.forName("com.mysql.jdbc.Driver");//通过驱动管理类获取数据库链接connection =  DriverManager.getConnection("jdbc:mysql://120.25.162.238:3306/mybatis001?characterEncoding=utf-8", "root", "123");//定义sql语句 ?表示占位符String sql = "select * from user where username = ?";//获取预处理statementpreparedStatement = connection.prepareStatement(sql);//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值preparedStatement.setString(1, "王五");//向数据库发出sql执行查询,查询出结果集resultSet =  preparedStatement.executeQuery();//遍历查询结果集while(resultSet.next()){System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));}} catch (Exception e) {e.printStackTrace();}finally{//释放资源if(resultSet!=null){try {resultSet.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(preparedStatement!=null){try {preparedStatement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

作者@brianway更多文章:个人网站 | CSDN | oschina

转载于:https://my.oschina.net/brianway/blog/625233

mybatis学习笔记(1)-对原生jdbc程序中的问题总结相关推荐

  1. mybatis 学习笔记:mybatis 初认识

    简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 preparedStatement 中的输入参数自动进行映射,将查询 ...

  2. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  3. MyBatis学习笔记2 ——第一个MyBatis程序

    MyBatis学习笔记2 --第一个MyBatis程序 参考教程B站狂神https://www.bilibili.com/video/BV1NE411Q7Nx 环境搭建 建立一个mybatis数据库用 ...

  4. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  5. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  6. 【应用篇】MyBatis学习笔记

    MyBatis学习笔记 一 环境配置 1 什么是MyBatis? ​ MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参 ...

  7. 超详细Mybatis学习笔记(可供下载)

    文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...

  8. Mybatis学习笔记【part03】增删改查

    Mybatis 学习笔记 Part03 1.传入参数与返回参数设置(查) <!-- 根据 id 查询 --> <select id="findById" resu ...

  9. Mybatis学习笔记——第一天

    Mybatis学习打卡 Mybatis学习笔记---第一天 Mybatis笔记 第一天 一.引言 1. 现有Jdbc的缺陷 2. Mybatis框架 3. 搭建环境 1) 引入jar包 2) 引入配置 ...

最新文章

  1. nature | 基于深度学习方法的虚拟组织染色
  2. 分别是什么意思_你知道抗震支架T和TL分别代表什么意思?
  3. js获取及判断按键的方法
  4. 将Integer赋值给int(空指针异常)
  5. UML中关联关系和依赖关系的区别(转)
  6. 利用js实现 禁用浏览器后退| 去除上一个历史记录链接
  7. chrome地址栏命令
  8. html表单实现ajax登陆,node.js+jQuery实现用户登录注册AJAX交互
  9. AlexNet模型解读
  10. 2018牛客网暑假ACM多校训练赛(第六场)I Team Rocket 线段树
  11. PuTTY/PuttyGen创建密钥及利用密钥登录服务器
  12. [转]AVALONDOCK 2.0入门指南第一部分
  13. Java 45:Spring
  14. Oracle查数据库某字段的本年数,上年同期数,同比
  15. 戴德金--连续性和无理数--我自己做的中文翻译第11页
  16. Python IDLE的下载,安装和使用
  17. 华为正式发布“鸿蒙”,率先进行应用开发。
  18. Mac系统下使用SecureCRT连接Linux虚拟机及上传文件
  19. android 卡顿、ANR优化(1)屏幕刷新机制
  20. 我的阿里春招之路:历时14天,五轮面试后终于拿到Android岗offer,原来大厂都是从这几个方面问问题

热门文章

  1. 看面试题感觉生疏的知识点
  2. Java校招笔试题-Java基础部分(七)
  3. 垃圾回收算法与实现系列-学习GC之前的准备工作
  4. 【MyBatis框架】配置文件-resultMap总结
  5. KVM Disk Cache简析
  6. Ubuntu server中静态IP配置
  7. 《Go 语言程序设计》读书笔记 (三) 方法
  8. 数据时代总结思维导图模板分享及绘制技巧
  9. Mysql-GTID
  10. Spring Boot 1.5.10 发布:修复重要安全漏洞!!!