Spring知识点总结(五)Spring整合JDBC
1. 回顾JDBC
a. java操作关系型数据的API。导入相关数据库的驱动包后可以通过JDBC提供的接口来操作数据库。
b. 实现JDBC的六个步骤
注册数据库驱动
获取数据库连接
获取传输器对象
传输sql执行获取结果集对象
遍历结果集获取信息
关闭资源
c. 数据库连接池(数据源)
C3P0连接池
2.Spring整合JDBC
a. 导入相关开发包

b. 将数据源交于Spring管理


c.通过spring获取数据源,获取连接,操作数据库

3.Spring中的JDBC模板类
使用模板类,能够极大的简化原有JDBC的编程过程,让数据库操作变得简单.
a. 在Spring中配置JDBC模板类

b. 使用JDBC模板类实现增删改查
@Test
public void test02() throws SQLException{
DataSource source = (DataSource) context.getBean("dataSource");
Connection conn = source.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from users");
ResultSet rs = ps.executeQuery();
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
User user = new User(id,name,age);
System.out.println(user);
}
} @Test
public void test03() throws SQLException{
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
List<Map<String,Object>> list = jdbcTemplate.queryForList("select * from users");
System.out.println(list);
}
@Test
public void test04() throws SQLException{
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
SqlRowSet srs = jdbcTemplate.queryForRowSet("select * from users where id = ?",2);
srs.next();
System.out.println(srs.getString("name"));
}
@Test
public void test05() throws SQLException{
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
int n = jdbcTemplate.update("insert into users values (null,?,?)", "ddd",23);
System.out.println("修改成功,影响到的行数为:"+n);
}
@Test
public void test06() throws SQLException{
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
int n = jdbcTemplate.update("update users set age = ? where id = ?", 33,4);
System.out.println("修改成功,影响到的行数为:"+n);
}
@Test
public void test07() throws SQLException{
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
int n = jdbcTemplate.update("delete from users where id = ?", 4);
System.out.println("修改成功,影响到的行数为:"+n);
}
c. 使用RowMapper封装bean
RowMapper接口定义了对象到列的映射关系,可以帮助我们在查询时自动封装bean。
public class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int i) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
return user;
}
}
/**
* 使用RowMap封装bean
*/
@Test
public void test08(){
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
List<User> list = jdbcTemplate.query("select * from users",new UserRowMapper());
System.out.println(list);
}
/**
* 使用RowMap封装bean
*/
@Test
public void test09(){
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
User user = jdbcTemplate.queryForObject("select * from users where id = ?",new UserRowMapper(),2);
System.out.println(user);
}
d. 使用BeanPropertyRowMapper自动进行映射
BeanPropertyRowMapper内部可以使用指定类进行反射(内省)来获知类内部的属性信息,自动映射到表的列。使用它一定要注意,类的属性名要和对应表的列名必须对应的上,否则属性无法自动映射。BeanPropertyRowMapper底层通过反射(内省)来实现,相对于之前自己写的RowMapper效率比较低。
/**
* 通过BeanPropertyRowMapper实现自动封装bean
*/
@Test
public void test10(){
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
List<User> list = jdbcTemplate.query("select * from users", new BeanPropertyRowMapper(User.class));
System.out.println(list);
}
/**
* 通过BeanPropertyRowMapper实现自动封装bean
*/
@Test
public void test11(){
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
User user = jdbcTemplate.queryForObject("select * from users where id = ?", new BeanPropertyRowMapper(User.class),2);
System.out.println(user);
}
Spring知识点总结(五)Spring整合JDBC的更多相关文章
- Spring Security 解析(五) —— Spring Security Oauth2 开发
Spring Security 解析(五) -- Spring Security Oauth2 开发 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决 ...
- spring与mybatis五种整合方法
1.采用数据映射器(MapperFactoryBean)的方式 不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数. (1)Spring配置文件: <!-- 引入jdbc ...
- Spring Cloud gateway 五 Sentinel整合
微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...
- spring boot(十五)spring boot+thymeleaf+jpa增删改查示例
快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency> <groupId>org.springframework.b ...
- Spring Boot入门(五):使用JDBC访问MySql数据库
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序开发的过程中,操作数据库是必不可少的部分,前面几篇博客中,也一直未涉及到数据库的操作,本篇博客 就 ...
- spring深入学习(五)-----spring dao、事务管理
访问数据库基本是所有java web项目必备的,不论是oracle.mysql,或者是nosql,肯定需要和数据库打交道.一开始学java的时候,肯定是以jdbc为基础,如下: private sta ...
- spring学习 十五 spring的自动注入
一 :在 Spring 配置文件中对象名和 ref=”id” ,id 名相同使用自动注入,可以不配置<property/>,对应的注解@Autowired的作用 二: 两种配置办法 (1 ...
- Spring学习(十五)----- Spring AOP通知实例 – Advice
Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点.简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后 ...
- Spring学习十五----------Spring AOP API的Pointcut、advice及 ProxyFactoryBean相关内容
© 版权声明:本文为博主原创文章,转载请注明出处 实例: 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4. ...
随机推荐
- swpuctf-web部分学习总结
1.用优惠码 买个 X ? (1)第一步: 这道题第一步主要知道利用php的随机种子数泄露以后就可以利用该种子数来预测序列,而在题目中会返回15位的优惠码,但是必须要24位的优惠码,因此要根据15位的 ...
- 【VMware】VMware的安装和更改虚拟机默认存储路径
1.VMware Workstation 14中文破解版安装 网盘下载链接:https://pan.baidu.com/s/1pbDXpgpNQTdTRzzKNWfE1A linux镜像(CentOS ...
- [转]Asp.net MVC中的ViewData与ViewBag
本文转自:http://www.cnblogs.com/wintersun/archive/2012/01/21/2328563.html 在Asp.net MVC 3 web应用程序中,我们会用到V ...
- [转]Asp.Net MVC EF各版本区别
本文转自:http://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC ...
- JavaScript数组常用操作总结
我们在日常开发过程中,使用到原生 JavaScript的时候,有时候会频繁的对数组进行操作,今天我把工作以来,经常用到的有关 JavaScript数组的方法总结一下,方便日后工作的时候查找使用! 一. ...
- Strom入门
Worker.Executor.Task详解: Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:1. Worker Process(工作进程)——S ...
- matlab练习程序(Arnold图像置乱)
自从上次写了Hilbert图像置乱之后,就对图像置乱研究了一下,发现这里面也是有很多置乱算法的. Arnold也算一种比较主要的置乱算法,算法由以下变换公式产生: 这里a和b是参数,n是迭代次数,N是 ...
- 【MATLAB】R2017b两个镜像文件如何安装
1.采用DEAMON TOOLS加载镜像1. 2.当安装过程中弹出[请插入DVD2]时,在原来的盘符上面右键点击[装载],选择DVD2的镜像文件.在安装程序处选择[继续]即可正常安装.
- java maven项目 导入jar包注意
1.将jar 包放到lib目录下 2.build path 3.点击maven主项目右键选择properties 4.选择myeclipse 下的第一个选项 5.点击add 选择archives ...
- OFFICE_EXCEL_Combine text from two or more cells into one cell.
Excel Enter and format data Layout Combine text from two or more cells into one cell Combine t ...