Spring JDBC
Posted miantiao312
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring JDBC相关的知识,希望对你有一定的参考价值。
一、 Spring JDBC 简介
Spring JDBC :spring 官方提供的一个持久层框架,对jdbc进行了抽象和封装,消除了重复冗余的jdbc重复性的代码,使操作数据库变的更简单。
但Spring JDBC本身并不是一个orm框架,与hibernate相比,它需要自己操作sql,手动映射字段关系,在保持灵活性的同时,势
必造成了开发效率的降低。如果需要使用完整的orm框架操作数据库,可以使用hibernate或者spring Data Jpa。
Spring JDBC :提供了模板类对数据库简化对数据库的操作,其中JdbcTemplate是最常用的。
二、代码逻辑实现
A、原始Jdbc实现
blic class User {
private int id;
private String name;
private String sex;
private int age;
//省略getter/setter方法
}
public class JdbcTemplateTest1 {
@Test
public void test1() {
//1.创建连接池
DriverManagerDataSource dataSource=new DriverManagerDataSource();
//2.设置数据库属性
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///springtest");
dataSource.setUsername("root");
dataSource.setPassword("root");
//3.创建JdbcTemplate完成数据库操作
JdbcTemplate jdbc=new JdbcTemplate();
jdbc.setDataSource(dataSource);
jdbc.execute("update t_user set name=‘逗逗‘ where id=‘1‘");
}
}
B、配置 spring 内置的连接池DriverManagerDataSource
applicationContext.xml
<bean id="driverManagerDateSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///springtest" />
<property name="username" value="root" />
<property name="password" value="root"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="driverManagerDateSource"/>
</bean>
测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class JdbcTemplateTest2 {
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void test1() {
jdbcTemplate.execute("update t_user set sex=‘女孩‘");
}
}
C、使用C3P0开源连接池(写在配置文件中)
db.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///springtest
jdbc.username=root
jdbc.password=root
applicationContext.xml
<!--引入外部数据库配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- c3p0连接池 -->
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="c3p0DataSource"/>
</bean>
测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class JdbcTemplateTest2 {
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void test1() {
jdbcTemplate.execute("update t_user set sex=‘我是逗比‘");
}
}
以上是关于Spring JDBC的主要内容,如果未能解决你的问题,请参考以下文章
Spring对JDBC的模板支持——JdbcTemplate
mysql jdbc源码分析片段 和 Tomcat's JDBC Pool
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段