Jdbc模版式写法与Spring-JdbcTemplate的比较
来源:互联网 发布:手机视频捕捉软件 编辑:程序博客网 时间:2024/05/22 01:54
一、Jdbc模版式写法:
【流程】
- 加载驱动
- 获取数据库链接
- 创建Statement对象(用于发送sql语句)
- 向数据库发送sql语句,获取数据库返回的结果集
- 从结果集中获取数据
- 释放资源
- 上述部分用try-catch-finally语句包围
【详解】(以Mysql为例)
1.加载驱动
将Mysql驱动jar包导入lib文件夹,配置到构建路径中。
String driver = "com.mysql.jdbc.Driver";//更改驱动时修改字符串即可Class.forName(driver);//加载com.mysql.jdbc.Driver类
通过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.Driverurl = jdbc:mysql:\\localhost:3306\studentusername = rootpassword = root获取db.properties中的数据:
Properties prop = new Properties();prop.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));//载入db.propertiesClass.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.Driverurl = jdbc:mysql:\\localhost:3306\studentusername = rootpassword = 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语句
阅读全文
0 0
- Jdbc模版式写法与Spring-JdbcTemplate的比较
- JDBC、JDBCTemplate、MyBatis、Hiberante 比较与分析
- JDBC、JDBCTemplate、MyBatis、Hiberante 比较与分析
- 【Java】spring 模版 jdbcTemplate
- Spring JDBC、Spring JdbcTemplate 、
- 用Spring对JDBC的操作:JdbcTemplate
- JDBC:Spring框架中JDBCTemplate的使用
- 使用Spring的jdbcTemplate简化JDBC操作
- 使用Spring的JdbcTemplate简化jdbc操作
- 使用Spring JDBCTemplate简化JDBC的操作
- 使用Spring JDBCTemplate简化JDBC的操作
- 使用Spring JDBCTemplate简化JDBC的操作
- spring 03之JDBC模版与声明式事务
- JDBC-JdbcTemplate-spring、Ibatis
- Spring JdbcTemplate 简化 JDBC
- Spring-jdbc:JdbcTemplate使用简介
- Spring中支持JDBC的JdbcTemplate模板类的使用
- 使用Spring的jdbcTemplate进一步简化JDBC操作
- 使用Hadoop的C API操作HDFS
- ccf节日
- springmvc的配置
- CAS与Unsafe
- HDU 2553 N皇后问题(dfs)
- Jdbc模版式写法与Spring-JdbcTemplate的比较
- 用python简单处理图片(2):图像通道\几何变换\裁剪
- python生成器
- 使用Go语言实现简单的Get请求
- 浅谈HDFS和MapReduce-YARN的运行原理
- 通达OA2017版流程中心触发器应用实例
- MySQL主从环境配置(笔记系列)
- 机器学习(统计学习方法)
- Oracle常用函数整理