一、Jdbc模版式写法:

【流程】

  1. 加载驱动
  2. 获取数据库链接
  3. 创建Statement对象(用于发送sql语句)
  4. 向数据库发送sql语句,获取数据库返回的结果集
  5. 从结果集中获取数据
  6. 释放资源
  7. 上述部分用try-catch-finally语句包围
【详解】(以Mysql为例)
1.加载驱动
将Mysql驱动jar包导入lib文件夹,配置到构建路径中。
String driver = "com.mysql.jdbc.Driver";//更改驱动时修改字符串即可
Class.forName(driver);    //加载com.mysql.jdbc.Driver类

2.获取数据库链接
通过DriverManager工具类中的getConnection方法,创建数据库链接对象:
【Connection:java.sql.Connection】
Connection conn = DriverManager.getConnection(url, username, password);

url,user,password参数都是String字符串。其中username和password就是Mysql的用户名和密码。
url:数据库地址。在Mysql中,是:jdbc:mysql://主机:端口/数据库名?参数的形式。比如:
String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8";。
>>>>>>>>>>>>>>>>>>>>>>>>>实际开发中的做法<<<<<<<<<<<<<<<<<<<<<<<<<
>实际开发中,一般会建立db.properties配置文件,存储driver、url、username、password等信息。如此,这些信息有改动时,不用修改代码,只需修改配置文件即可。
db.properties:
driver = com.mysql.jdbc.Driver
url = jdbc:mysql:\\localhost:3306\student
username = root
password = root

获取db.properties中的数据:
Properties prop = new Properties();
prop.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));//载入db.properties
Class.forName(prop.getProperty(driver));
Connnection conn = DriverManager.getConnection(prop.getProperty(url),prop.getProperty(username),prop.getProperty(password));

3.创建Statement对象
通过Connection类中的createStatement方法,创建Statement对象:
【Statement:java.sql.Statement】
Statement st = conn.createStatement();

4.发送sql语句,获取结果集
通过Statement类中的excuteQuery或excuteUpdate方法,执行sql语句,返回值为ResultSet类对象(创建):
【ResultSet:java.sql.ResultSet】
String sql = "SELECT name FROM student WHERE id = 1";
ResultSet rs = st.excuteQuery(sql);

5.从结果集中获取数据
数据在结果集rs中的存放方式:类似于表格的形式,初始游标指向表头。
要获取数据时,通过rs.next()方法,令游标指向下一行,然后通过rs.get*(*)方法获取该行的数据。
当存在下一行时,rs.next()返回true,否则返回false。所以rs.next()的返回值可以作为遍历结果集rs时的循环条件。
获取数据的方法:
(1)getInt("列名"),getString("列名")……
(2)getObject("列名")
通过ResultSet类中的方法获取rs中的数据:
String name = null;
while(rs.next()) {name = rs.getString("name");
}

6.释放资源

与创建资源顺序相反,注意要放在finally中。
  • 释放rs:rs.close();
  • 释放st:st.close();
  • 关闭数据库链接:conn.close();
二、利用JdbcTemplate的写法
1.创建db.properties,定义驱动driver、数据库链接url、用户名username、密码password。
driver = com.mysql.jdbc.Driver
url = jdbc:mysql:\\localhost:3306\student
username = root
password = root

2.配置Spring配置文件:applicationContext.xml
首先(第1行),读取db.properties。
然后(第2-7行),用db.properties中的内容配置一个数据源对象。DriverManagerDataSource是数据源类。数据源类可详见编写DAO,通过JdbcTemplate操作数据库的实践
最后(第9-11行),配置一个JdbcTemplate实例,注入dataSource数据源对象。
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="username" value="${username}"></property><property name="password" value="${password}"></property><property name="driver" value="${driver}"></property><property name="url" value="${url}"></property>
</bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property>
</bean>

3.创建应用上下文对象,获取JdbcTemplate对象。
ApplicationContext apc = new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) apc.getBean("jdbcTemplate");

4.通过JdbcTemplate中封装的方法,执行sql语句,将结果提取到指定对象中(此处以查询语句为例)
String sql = "select id,name,school from student where id=? ";    //sql语句
RowMapper<Student> rowMapper = new BeanPropertyRowMapper<Student>(Student.class);    //通过Student创建RowMapper实例【为了高性能,应自定义RowMapper(复写mapRow方法)而不是利用现成类】
Student stu = jdbcTemplate.queryForObject(sql,rowMapper,20);        //查询id为20的那一行数据,将结果存入到rowMapper对象中

三、JdbcTemplate的优势
1.加载驱动、创建链接都可以在xml文件中完成,代码可专注于sql语句的发送及其结果
2.无需创建Statement对象
3.无需手动释放资源
4.无需使用try-catch语句

转载于:https://www.cnblogs.com/cage666/p/7295382.html

Jdbc模版式写法与Spring-JdbcTemplate的比较相关推荐

  1. Spring JdbcTemplate示例

    Spring JdbcTemplate示例 Spring JdbcTemplate是Spring JDBC包中最重要的类. 目录[ 隐藏 ] 1 Spring JdbcTemplate 1.1 Spr ...

  2. jdbc mysql 返回游标_使用JdbcTemplate流式(游标)读取数据库

    前言 生产环境中经常使用数据库分页的方式来控制一次获取的数据量,而数据处理中经常会有另外一种场景: 从一个数据库表中读取所有数据进行处理并将结果保存在其他数据库或文件或NoSql数据库中. 这时候也可 ...

  3. 06_02_任务三:Spring JDBCTemplate 声明式事务

    任务三:Spring JDBCTemplate & 声明式事务 课程任务主要内容: Spring的JdbcTemplate Spring的事务 Spring集成web环境 一 Spring的J ...

  4. Spring JdbcTemplate方法详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...

  5. Spring JdbcTemplate的queryForList(String sql , ClassT elementType)易错使用--转载

    原文地址: http://blog.csdn.net/will_awoke/article/details/12617383 一直用ORM,今天用JdbcTemplate再次抑郁了一次. 首先看下这个 ...

  6. 转载:为什么使用ibatis而不用spring jdbcTemplate

    第一:ibatis仅仅是对jdbc薄薄的一层封装,完全不丧失sql的灵活性 第二:ibatis所有的sql都可以放在配置文件中,这样有利于sql的集中管理,特别是在sql tuning是很容易把得到所 ...

  7. php sql 条件拼组_ThinkPHP框架SQL操作链式写法原理(浅显易懂)

    引言 大家如果有面试几次不难发现,虽然国产的TP一直被人诟病.但是丝毫不能影响它在广大企业中的开发受到青睐,强大的社区,暴力实用详细的中文手册.有一个地方相信大家都不陌生,就是他的链式写法,链式写法的 ...

  8. 【SSM框架系列】Spring - JdbcTemplate声明式事务

    JdbcTemplate概述 以往使用jdbc时,每次都需要自己获取PreparedStatement,执行sql语句,关闭连接等操作.操作麻烦冗余,影响编码的效率. Spring把对数据库的操作在j ...

  9. Spring JdbcTemplate+JdbcDaoSupport实例

    在Spring JDBC开发中,可以使用 JdbcTemplate 和 JdbcDaoSupport 类来简化整个数据库的操作过程. 在本教程中,我们将重复上一篇文章Spring+JDBC例子,看之前 ...

最新文章

  1. 说说牛顿迭代 -- 方法篇
  2. 1019 General Palindromic Number (20分)_18行代码AC
  3. 详解Paint的setColorFilter(ColorFilter filter)
  4. 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数
  5. android微信照片未发送成功,解决Android整合微信分享无法发送图片问题
  6. 轻松熊喵喵个人笔记 -- java学习路线记录
  7. 一篇适合小白的Shiro教程
  8. 教你快速录制gif动图
  9. 马斯克血洗推特!传机器学习裁员90%,团队直接解散
  10. 深度清理电脑垃圾软件 如何深度清理电脑垃圾
  11. 使用pathogen安装vim插件nerdtreee
  12. C语言:输出大写的三角形字母表(进阶)
  13. 使用maya.cmds加载和卸载插件
  14. 小学计算机课题研究方案,《小学信息技术课堂有效教学的探究》课题研究方案...
  15. 音视频开发(十九):运算符重载、继承、多态、模版
  16. 《微信小程序案例12》图片识别功能
  17. 2023年湖北武汉中级工程师怎么申请?申报渠道有哪些?启程别
  18. IP安全:DDoS攻击、tearDrop攻击和微小碎片攻击
  19. linux标准学习之-LSB
  20. 集成微信支付后每次打开app都会跳转到微信显示正在连接

热门文章

  1. 合理的使用纯函数式编程
  2. PIL应用之生成验证码图片
  3. Adobe Acrobat Reader 快捷键
  4. 域客户端的计算机更名
  5. 20080608-昨日回顾今日计划
  6. Question for the 3D printing lattice?
  7. what courses to choose at Cambridge?
  8. 想不明白的时候可以干的十件事情
  9. Android 操作系统为什么不启用swap?
  10. String比较? 用==判断两个字符串,有时为true有时为false