mybatis学习笔记(1)-对原生jdbc程序中的问题总结
2019独角兽企业重金招聘Python工程师标准>>>
mybatis学习笔记(1)-对原生jdbc程序中的问题总结
标签:mybatis
[TOC]
本文总结jdbc编程的一般步骤,总结这样编程存在的问题,并附上典型地jdbc示例demo
jdbc编程步骤
- 加载数据库驱动
- 创建并获取数据库链接
- 创建jdbc statement对象
- 设置sql语句
- 设置sql语句中的参数(使用preparedStatement)
- 通过statement执行sql并获取结果
- 对sql执行结果进行解析处理
- 释放资源(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程序中的问题总结相关推荐
- mybatis 学习笔记:mybatis 初认识
简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 preparedStatement 中的输入参数自动进行映射,将查询 ...
- mybatis学习笔记(3)-入门程序一
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...
- MyBatis学习笔记2 ——第一个MyBatis程序
MyBatis学习笔记2 --第一个MyBatis程序 参考教程B站狂神https://www.bilibili.com/video/BV1NE411Q7Nx 环境搭建 建立一个mybatis数据库用 ...
- mybatis学习笔记(13)-延迟加载
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- 【应用篇】MyBatis学习笔记
MyBatis学习笔记 一 环境配置 1 什么是MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参 ...
- 超详细Mybatis学习笔记(可供下载)
文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...
- Mybatis学习笔记【part03】增删改查
Mybatis 学习笔记 Part03 1.传入参数与返回参数设置(查) <!-- 根据 id 查询 --> <select id="findById" resu ...
- Mybatis学习笔记——第一天
Mybatis学习打卡 Mybatis学习笔记---第一天 Mybatis笔记 第一天 一.引言 1. 现有Jdbc的缺陷 2. Mybatis框架 3. 搭建环境 1) 引入jar包 2) 引入配置 ...
最新文章
- nature | 基于深度学习方法的虚拟组织染色
- 分别是什么意思_你知道抗震支架T和TL分别代表什么意思?
- js获取及判断按键的方法
- 将Integer赋值给int(空指针异常)
- UML中关联关系和依赖关系的区别(转)
- 利用js实现 禁用浏览器后退| 去除上一个历史记录链接
- chrome地址栏命令
- html表单实现ajax登陆,node.js+jQuery实现用户登录注册AJAX交互
- AlexNet模型解读
- 2018牛客网暑假ACM多校训练赛(第六场)I Team Rocket 线段树
- PuTTY/PuttyGen创建密钥及利用密钥登录服务器
- [转]AVALONDOCK 2.0入门指南第一部分
- Java 45:Spring
- Oracle查数据库某字段的本年数,上年同期数,同比
- 戴德金--连续性和无理数--我自己做的中文翻译第11页
- Python IDLE的下载,安装和使用
- 华为正式发布“鸿蒙”,率先进行应用开发。
- Mac系统下使用SecureCRT连接Linux虚拟机及上传文件
- android 卡顿、ANR优化(1)屏幕刷新机制
- 我的阿里春招之路:历时14天,五轮面试后终于拿到Android岗offer,原来大厂都是从这几个方面问问题