Spring JdbcTemplate框架搭建及其增删改查使用指南
前言:
本文指在介绍Spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基本概念。目标是使读者能够对JdbcTemplate快速地掌握和使用。
准备:
1. Spring的基本概念
Spring框架核心的思想就是建立一个Java对象的大工厂,用户只要给工厂一个指令,工厂就能将用户需要的对象根据配置文件组装好返还给用户。用户需要做的许多工作则可以写成简单的配置文件。
2. 丑陋的JDBC代码
Connection con = null;
PreparedStatement pStmt = null;
ResultSet rs = null;
try {
con = ods.getConnection();
String sql = "select * from admin";
pStmt = con.prepareStatement(sql);
rs = pStmt.executeQuery();
while (rs.next()) {
}
} catch (Exception ex) {
try {
con.rollback();
} catch (SQLException sqlex) {
sqlex.printStackTrace(System.out);
}
ex.printStackTrace();
} finally {
try {
rs.close();
pStmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
以上是常见的JDBC代码,简单的select语句也需要冗长的出错处理,并且每个函数都不断地重复同样的代码。
3. JdbcTemplate的作用
JdbcTemplate正是为了减少上述繁琐的代码而设计出来的。它是对JDBC的一种封装,抽象我们常用的一些方法。Simple and Stupid就是它的目标。下面是完成了刚才JDBC代码同样功能的JdbcTemplate的代码:
String sql = "select * from admin";
jdbcTemplate.query(sql,new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
}
} );
环境搭建:
1. 数据库的配置
本文使用Mysql数据库,新建表admin:
CREATE TABLE `admin` ( `ID` bigint(20) unsigned NOT NULL auto_increment, `NAME` varchar(100) NOT NULL, `PASSWORD` varchar(200) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2. Spring配置
JdbcTemplate的使用需要有DataSource的支持,所以在配置文件中,我们首先要配置一个OracleDataSource,然后在将这个DataSource配置到JdbcTemplate里。接着将JdbcTemplate配置进DAO层,最后将DAO配置进Model层。简要的关系如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/zuidaima_admin?useUnicode=true&characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="111111" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="userDao" class="com.zuidaima.dao.impl.UserDaoImpl">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate" />
</property>
</bean>
<bean id="user" class="com.zuidaima.model.User">
<property name="dao">
<ref bean="userDao" />
</property>
</bean>
</beans>
3. 项目截图:
使用方法:
1.查找
多行查询:
class UserRowMapper implements RowMapper {
public Object mapRow(ResultSet rs,int index) throws SQLException
{
User u = new User();
u.setId(rs.getString("ID"));
u.setName(rs.getString("Name"));
u.setPassword(rs.getString("Password"));
return u;
}
}
public List select(String where)
{
List list;
String sql = "select * from admin "+where;
list = jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper()));
return list;
}
List最终返回的是满足条件的User队列。
单行查询:
public User selectById(String id){
String sql = "select * from admin where id=?";
final User u = new User();
final Object[] params = new Object[] {id};
jdbcTemplate.query(sql, params, new RowCallbackHandler(){
public void processRow(ResultSet rs) throws SQLException {
u.setId(rs.getString("ID"));
u.setName(rs.getString("NAME"));
u.setPassword(rs.getString("PASSWORD"));
}
});
return u;
}
2. 插入
public void insert(User u)
{
String sql = "insert into admin (ID,NAME,PASSWORD) values (admin_id_seq.nextval,?,?)";
Object[] params = new Object[] {
u.getName(),
u.getPassword() };
jdbcTemplate.update(sql,params);
}
admin_id_seq.nextval为Oracle设置好的序列,问号“?”被params里的数据依次替代,最终执行sql。
3. 修改
非常简单:
public void update(String how)
{
jdbcTemplate.update(how);
}
运行截图
数据库截图
猜你喜欢
- Spring4.2.1框架整合Jdbctemplate实现Mysql增删查改的java web入门学习项目
- Spring生命周期接口InitializingBean和DisposableBean的实例演示
- Java Spring的三种注入方式
- spring通过p-namespace的方式实现xml配置bean的属性实例
- spring通过c-namespace的方式实现xml配置bean构造函数实例
- Spring通过properties文件的配置实现bean初始化的简单示例
- Spring自定义类似@Required注解实现在容器启动时对bean进行依赖校验
- spring 各种demo实例
- Java Spring定时器Demo, 可自动跳过节假日
- Spring通过配置component-scan base-package实现自动扫码指定路径的类并初始化bean的简单示例
- Spring两种常用的事务管理范例AspectJ和基于注解方式
- spring通过@Async注解实现异步执行Service方法并且通过Java Future对象得到执行结果
- /
- /zuidaima_admin
- /zuidaima_admin/pom.xml
- /zuidaima_admin/src
- /zuidaima_admin/src/main
- /zuidaima_admin/src/main/java
- /zuidaima_admin/src/main/java/com
- /zuidaima_admin/src/main/java/com/zuidaima
- /zuidaima_admin/src/main/java/com/zuidaima/dao
/zuidaima_admin/src/main/java/com/zuidaima/dao/UserDao.java
- /zuidaima_admin/src/main/java/com/zuidaima/dao/impl
- /zuidaima_admin/src/main/java/com/zuidaima/model
- /zuidaima_admin/src/main/java/com/zuidaima/test
- /zuidaima_admin/src/main/java/com/zuidaima/dao
- /zuidaima_admin/src/main/java/com/zuidaima
- /zuidaima_admin/src/main/java/com
- /zuidaima_admin/src/main/resources
- /zuidaima_admin/src/main/resources/beans.xml
- /zuidaima_admin/src/main/java
- /zuidaima_admin/src/main
- /zuidaima_admin
相关代码
- 证 Spring生命周期接口InitializingBean和DisposableBean的实例演示
- Java Spring的三种注入方式
- 证 spring通过p-namespace的方式实现xml配置bean的属性实例
- 证 spring通过c-namespace的方式实现xml配置bean构造函数实例
- 证 Spring通过properties文件的配置实现bean初始化的简单示例
- 证 Spring自定义类似@Required注解实现在容器启动时对bean进行依赖校验
- spring 各种demo实例
- Java Spring定时器Demo, 可自动跳过节假日
- 证 Spring通过配置component-scan base-package实现自动扫码指定路径的类并初始化bean的简单示例
- Spring两种常用的事务管理范例AspectJ和基于注解方式
- 证 spring通过@Async注解实现异步执行Service方法并且通过Java Future对象得到执行结果
- [工作必备]spring定时器简单的demo
最近下载
最近浏览





