1.数据库脚本
create table user ( id int not null, name varchar(20), primary key(id) );
2.实体类
package org.monday.springjdbc; public class User { private int id; private String name; public User() { } public User(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User [id=" + id + ", name=" + name + "]"; } }
3.Dao接口
package org.monday.springjdbc; import java.util.List; public interface UserDao { public void insert(User user); public void update(User user); public void delete(User user); public void delete(int id); public User findById(int id); public int findByName(String name); public List<User> findAll(); public int count(); public void batchInsert(List<User> users); }
4.Dao的实现类
package org.monday.springjdbc; import java.util.ArrayList; import java.util.List; import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport; public class UserDaoImpl extends SimpleJdbcDaoSupport implements UserDao { @Override public void insert(User user) { String sql = "insert into user(id,name)values(?,?)"; getSimpleJdbcTemplate().update(sql, user.getId(), user.getName()); } @Override public void update(User user) { String sql = "update user set name=? where id=?"; getSimpleJdbcTemplate().update(sql, user.getName(), user.getId()); } @Override public void delete(User user) { String sql = "delete from user where id=?"; getSimpleJdbcTemplate().update(sql, user.getId()); } @Override public void delete(int id) { String sql = "delete from user where id=?"; getSimpleJdbcTemplate().update(sql, id); } @Override public User findById(int id) { String sql = "select * from user where id=?"; return getSimpleJdbcTemplate().queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), id); // 下面的方法只能返回一列,所以行不通 // return getSimpleJdbcTemplate().queryForObject(sql, User.class, id); } @Override public int findByName(String name){ String sql = "select id from user where name=?"; return getSimpleJdbcTemplate().queryForObject(sql, Integer.class, name); // Integer.class 改成int.class 不行 // 貌似只能用包装类 } @Override public List<User> findAll() { String sql = "select * from user"; return getSimpleJdbcTemplate().query(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class)); } @Override public int count() { String sql = "select count(*) from user"; return getSimpleJdbcTemplate().queryForInt(sql); } @Override public void batchInsert(List<User> users) { String sql = "insert into user(id,name)values(?,?)"; List<Object[]> parameters = new ArrayList<Object[]>(); for (User u : users) { parameters.add(new Object[] { u.getId(), u.getName() }); } getSimpleJdbcTemplate().batchUpdate(sql, parameters); } }
5.beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 引入外部文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!-- 配置DAO --> <bean id="userDao" class="org.monday.springjdbc.UserDaoImpl"> <property name="dataSource" ref="dataSource"/> </bean> </beans>
6.jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring jdbc.username=root jdbc.password=root
7.测试
package org.monday.springjdbc; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { private ApplicationContext ctx = new ClassPathXmlApplicationContext( "beans.xml"); private UserDao userDao=(UserDao) ctx.getBean("userDao"); @Test public void testInsert() { User user = new User(1,"zy_1"); userDao.insert(user); } @Test public void testUpdate() { User user = new User(5,"zy_test"); userDao.update(user); } @Test public void testDeleteUser() { User user =new User(); user.setId(5); userDao.delete(user); } @Test public void testDeleteInt() { userDao.delete(4); } @Test public void testFindById() { User user=userDao.findById(1); System.out.println(user); } @Test public void testFindByName() { int id=userDao.findByName("zy_1"); System.out.println(id); } @Test public void testFindAll() { List<User> list=userDao.findAll(); System.out.println(list); } @Test public void testCount() { int count = userDao.count(); System.out.println(count); } @Test public void testBatchInsert() { List<User> users = new ArrayList<User>(); users.add(new User(2,"zy_2")); users.add(new User(3,"zy_3")); users.add(new User(4,"zy_4")); users.add(new User(5,"zy_5")); userDao.batchInsert(users); } }
附:自己写这篇文章的时候,用的是Spring2.5.而今天用了Spring3.1后发现,SimpleJdbcTemplate和SimpleJdbcDaoSupport都被标记为@Deprecated (过时了),后来一看源码,有这么一句话,就明白了。
@deprecated since Spring 3.1 in favor of {@link org.springframework.jdbc.core.JdbcTemplate} and
{@link org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate}. The JdbcTemplate and NamedParameterJdbcTemplate now provide all the functionality of the SimpleJdbcTemplate.
大意就是: 从Spring 3.1开始,JdbcTemplate和NamedParameterJdbcTemplate提供了SimpleJdbcTemplate的功能。
那既然这样的话,SimpleJdbcTemplate和SimpleJdbcDaoSupport被标记为过时,就明白了。
相关推荐
本篇文章将详细讲解如何使用Spring的`SimpleJdbcTemplate`来实现DAO操作,这是一种简单易用且强大的工具,特别适合小型项目或快速开发。 `SimpleJdbcTemplate`是Spring框架提供的一个轻量级数据库访问组件,它基于`...
`JdbcTemplate`和`SimpleJdbcTemplate`是Spring提供的两个核心组件,用于简化Java数据库连接(JDBC)操作,从而减轻开发人员处理事务、异常处理和资源管理的负担。下面将详细阐述这两个工具的使用及其与MySQL数据库...
Spring JDBC是Spring框架的一部分,它提供了一种抽象层,使得我们能够更方便地使用Java数据库连接(JDBC)技术。这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
通过以上步骤,我们可以有效地在Spring应用中配置和使用MySQL数据库,并借助SimpleJdbcTemplate简化SQL操作。这种模式不仅提高了代码的可读性和可维护性,也降低了直接操作JDBC带来的复杂性。在实际项目中,还可以...
本文将详细介绍Spring使用JDBC进行增删改查的三种主要方法。 首先,让我们了解Spring JDBC的基础。Spring JDBC模块通过`JdbcTemplate`和`SimpleJdbcTemplate`类提供了数据库访问的抽象层,简化了数据库操作。这两种...
3. **spring-context.jar**:在核心和Bean模块之上,提供了更高级的服务,如AOP(Aspect Oriented Programming,面向切面编程),事件发布,国际化支持,以及资源访问。它扩展了ApplicationContext接口,使其能够...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
通过深入研究Spring-ORM的源码,开发者不仅可以提高对Spring框架的理解,还能学习到数据库访问的最佳实践,以及如何高效地集成和使用不同的ORM框架。这对于任何希望优化和扩展数据访问层的Java开发者来说都是宝贵的...
在探讨“Spring中使用JDBC”的主题时,我们首先需要理解Spring框架与JDBC的关系以及为何选择在Spring环境中使用JDBC。Spring是一个开源框架,它为Java应用提供了一个全面的编程和配置模型,旨在简化企业级应用的开发...
Spring框架,作为Java领域最为广泛应用的开源框架之一,以其强大的功能和灵活的设计理念深受开发者喜爱。4.3.2.RELEASE是Spring的一个稳定版本,它包含了许多重要的改进和优化,深入理解其源码对于提升开发技能和...
3. **JDBC抽象层增强**:Spring 3.0改进了JdbcTemplate和SimpleJdbcTemplate,同时引入了NamedParameterJdbcTemplate,提供了更方便的参数绑定。 4. **Spring MVC增强**:对Spring MVC进行了大量优化,增加了...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
12. `org.springframework.web.struts`:Spring与Struts框架的集成,方便在Struts应用中使用Spring的功能。 13. `org.springframework.web.portlet`:针对portlet应用的MVC支持。 14. `org.springframework.web....
6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. ...
这个jar包包含了Spring对JDBC的支持,主要包括`JdbcTemplate`和`SimpleJdbcTemplate`类。`JdbcTemplate`是Spring提供的一种模板方法模式实现,它封装了JDBC的常用操作,如执行SQL查询、更新等,提供了异常转换和数据...
Spring JDBC通过提供JdbcTemplate和SimpleJdbcTemplate等工具类,帮助开发者以更安全、更易于管理的方式与数据库进行交互,降低了传统JDBC代码的复杂性。下面我们将详细探讨Spring JDBC的核心概念、工作原理以及如何...
Spring框架,作为Java开发领域中的核心框架之一,自诞生以来就以其强大的功能、优秀的可扩展性和模块化的结构赢得了广大开发者们的青睐。2.5.6版本是Spring在2008年10月发布的一个稳定版本,它在前一版本的基础上...
在Spring中使用JDBC,我们可以利用`JdbcTemplate`或`SimpleJdbcTemplate`,这两个都是对JDBC的轻量级封装,提供了更安全、更易于使用的API。例如,`UserServiceImp`可能包含了这些模板方法来执行SQL查询、更新、插入...