针对数据库操作,Spring框架提供了JdbcTemplate类。

1.Spring JDBC的配置

创建配置文件applicationContext.xml,添加如下代码:

  1.    <!--配置数据源-->
  2. <bean id="dataSource"
  3. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  4. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  5. <property name="url" value="jdbc:mysql://localhost:3306/springjdbc"/>
  6. <property name="username" value="root"/>
  7. <property name="password" value="root"/>
  8. </bean>
  9. <!--配置JDBC模板-->
  10. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  11. <property name="dataSource" ref="dataSource"/>
  12. </bean>
  13. <!--配置注入类-->
  14. <bean id="userDao" class="com.wxy.model.UserDaoImpl">
  15. <property name="jdbcTemplate" ref="jdbcTemplate"/>
  16. </bean>

2.创建Javabean和Dao接口

  1. public class User {
  2. private Integer id;
  3. private String name;
  4. private Integer age;
  5.  
  6. public Integer getId() { return id; }
  7.  
  8. public void setId(Integer id) {
  9. this.id = id;
  10. }
  11.  
  12. public String getName() {
  13. return name;
  14. }
  15.  
  16. public void setName(String password) {
  17. this.name = password;
  18. }
  19.  
  20. public Integer getAge() { return age; }
  21.  
  22. public void setAge(Integer age) {
  23. this.age = age;
  24. }
  25. }

javabean

  1. public interface UserDao {
  2. public void execute();
  3. public int addUser(User user);
  4. public int updateUser(User user);
  5. public int deleteUser(int id);
  6. public void query();
  7. }

UserDao

3.Spring JdbcTemplate的常用方法

2.1 execute(String sql)执行SQL语句

2.2 update()插入、更新、删除表数据操作

2.3 query()查询操作

上述的三个数据库操作方法都放在UserDaoImpl实现类中调用,具体代码如下:

  1. import com.wxy.javabean.User;
  2. import org.springframework.dao.DataAccessException;
  3. import org.springframework.jdbc.core.JdbcTemplate;
  4. import org.springframework.jdbc.core.ResultSetExtractor;
  5.  
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10.  
  11. public class UserDaoImpl implements UserDao {
  12. //获取JdbcTemplate实例
  13. private JdbcTemplate jdbcTemplate;
  14. 14 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
  15. 15 this.jdbcTemplate = jdbcTemplate;
  16. 16 }
  17. //执行SQL语句的方法
  18. @Override
  19. public void execute() {
  20. jdbcTemplate.execute("create table account( id int primary key auto_increment,"
  21. + "username varchar(50)," + "balance double)");
  22. }
  23. //添加用户
  24. @Override
  25. public int addUser(User user) {
  26. String sql = "insert user (id,name,age) value(?,?,?)";
  27. //定义数组来存储SQL语句中的参数
  28. Object[] obj = new Object[]{
  29. user.getId(),
  30. user.getName(),
  31. user.getAge()
  32. };
  33. int num = this.jdbcTemplate.update(sql,obj);
  34. return num;
  35. }
  36. //更新用户信息
  37. public int updateUser(User user){
  38. String sql = "update user set name=?,age=? where id=?";
  39. Object[] params = new Object[]{
  40. user.getName(),
  41. user.getAge(),
  42. user.getId()
  43. };
  44. int num = this.jdbcTemplate.update(sql,params);
  45. return num;
  46. }
  47. //删除用户
  48. @Override
  49. public int deleteUser(int id) {
  50. String sql = "delete from user where id =?";
  51. int num = jdbcTemplate.update(sql,id);
  52. return num;
  53. }
  54. //查询所有用户
  55. @Override
  56. public void query() {
  57. String listSql = "select * from user";
  58. List<User> list = jdbcTemplate.query(listSql, new ResultSetExtractor<List>() {
  59. public List<User> extractData(ResultSet rs) throws SQLException,
  60. DataAccessException {
  61. List<User> result = new ArrayList<User>();
  62. while (rs.next()) {
  63. User user = new User();
  64. user.setId(rs.getInt("id"));
  65. user.setName(rs.getString("name"));
  66. user.setAge(rs.getInt("age"));
  67. result.add(user);
  68. }
  69. return result;
  70. }
  71. });
  72.  
  73. for (User user : list) {
  74. System.out.print("id=" + user.getId() + " ");
  75. System.out.print("name=" + user.getName() + " ");
  76. System.out.println("age=" + user.getAge() + " ");
  77. }
  78. }
  79. }

4.编写测试类Test

  1. import com.wxy.javabean.User;
  2. import com.wxy.model.UserDaoImpl;
  3. import org.junit.Test;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6.  
  7. public class JdbcTemplateTest {
  8. @Test
  9. public void executeTest(){
  10. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  11. UserDaoImpl userDao = (UserDaoImpl) applicationContext.getBean("userDao");
  12. userDao.execute();
  13. System.out.println("创建成功!");
  14. }
  15. @Test
  16. public void addTest(){
  17. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  18. UserDaoImpl userDao = (UserDaoImpl) applicationContext.getBean("userDao");
  19. User user = new User();
  20. user.setId(3);
  21. user.setName("Tom");
  22. user.setAge(21);
  23. int num = userDao.addUser(user);
  24. if(num>0){
  25. System.out.println("成功添加"+num+"个用户");
  26. }else {
  27. System.out.println("添加用户操作失败!");
  28. }
  29. }
  30. @Test
  31. public void updateTest(){
  32. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  33. UserDaoImpl userDao = (UserDaoImpl) applicationContext.getBean("userDao");
  34. User user = new User();
  35. user.setId(2);
  36. user.setName("Tim");
  37. user.setAge(26);
  38. int num = userDao.addUser(user);
  39. if(num>0){
  40. System.out.println("成功修改"+num+"个用户");
  41. }else {
  42. System.out.println("修改用户信息失败!");
  43. }
  44. }
  45. @Test
  46. public void deleteTest(){
  47. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  48. UserDaoImpl userDao = (UserDaoImpl) applicationContext.getBean("userDao");
  49. int num = userDao.deleteUser(2);
  50. if(num>0){
  51. System.out.println("成功删除"+num+"个用户");
  52. }else {
  53. System.out.println("删除用户操作失败!");
  54. }
  55. }
  56. @Test
  57. public void query(){
  58. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  59. UserDaoImpl userDao = (UserDaoImpl) applicationContext.getBean("userDao");
  60. userDao.query();
  61. }
  62. }

Spring JDBC数据库开发的更多相关文章

  1. 【Spring】Spring的数据库开发 - 1、Spring JDBC的配置和Spring JdbcTemplate的解析

    Spring JDBC 文章目录 Spring JDBC Spring JdbcTemplate的解析 Spring JDBC的配置 简单记录-Java EE企业级应用开发教程(Spring+Spri ...

  2. (转)Spring+JDBC组合开发

    http://blog.csdn.net/yerenyuan_pku/article/details/52882435 搭建和配置Spring与JDBC整合的环境 使用Spring+JDBC集成步骤如 ...

  3. 【Spring】Spring的数据库开发 - 2、Spring JdbcTemplate的常用方法(execute、update、query)

    Spring JdbcTemplate的常用方法 文章目录 Spring JdbcTemplate的常用方法 execute() update() query() 简单记录-Java EE企业级应用开 ...

  4. Spring的数据库开发

                                Spring JDBC框架操作mysql数据库 Spring中的JDBC为我们省去连接和关闭数据库的代码,我们着重关注对数据库的操作.Sprin ...

  5. Spring笔记——Spring+JDBC组合开发

      使用Spring+JDBC集成步骤如下:   1. 配置数据源 2. 配置事务.配置事务时,需要在xml配置文件中引入用于声明事务的tx命名空间,事务的配置方式有两种:注解方式和基于XML配置方式 ...

  6. Spring——JDBC——数据库

    1.Spring 的数据访问哲学 数据访问的功能放到一个或者多个专注于此项任务的组件.这样的组件通常称为数据访问对象(data access object)DAO或者Repository. 为了避免应 ...

  7. 第4章 Spring的数据库开发

    4.1 Spring JDBC Spring的JDBC模块负责数据库资源管理和错误处理,化简了开发者对数据库的操作. 4.11 Spring JdbcTemplate的解析 * JdbcTemplat ...

  8. Spring + JDBC 组合开发集成步骤

    1:配置数据源,如: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h ...

  9. Spring数据库开发

    Spring的数据库开发 #Spring中JDBC模板的作用 JDBC模板负责数据库资源管理和错误处理: #熟悉Spring  JDBC的配置 配置数据源和jdbc模板 <?xml versio ...

随机推荐

  1. Run as ant build每次都执行两次-问题解决

    在Eclipse里面,运行ant,整个测试流程总是执行两遍,其几天试了下在DOS命令行直接调用ant, 结果发现只执行了一次,并且内存消耗好像也没那么大了,估计是eclipse自己的问题.问题解决了, ...

  2. ios -使用NSLayoutConstraint实现多个view等宽等高等间距

    @interface ViewController () { UIView *firstView; UIView *secondView; UIView *thirdView; } @end @imp ...

  3. Combotree--别样的构建层级json字符串

    1.先看效果 2.需要使用层级json格式,如: 3.先不要着急怎么去实现它,先来想想怎么用对象来描述它 4.代码 protected void Page_Load(object sender, Ev ...

  4. 【SQL】多表查询

    多表查询,即查询可以从两个或多个表中获取数据.在Oracle中,有两种类型的连接格式:ANSI SQL连接格式和Oracle特有的连接格式.Oracle建议采用符合ANSI标准的连接格式. 1.内连接 ...

  5. C#关闭退出线程的几种方法

    .Application.Exit(); //强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出: .System.Environment.Exit(); //无论在主线 ...

  6. 怎么不让别人ping服务器

    频繁地使用Ping命令会导致网络堵塞.降低传输效率,为了避免恶意的网络攻击,一般都会拒绝用户Ping服务器.为实现这一目的,不仅可以在防火墙中进 行设置,也可以在路由器上进行设置,并且还可以利用Win ...

  7. 读书笔记「Python编程:从入门到实践」_8.函数

    8.1 定义函数 def greet_user(): # def 来告诉Python你要定义一个函数.这是函数定义 """Hello World""& ...

  8. webpack学习(六)—webpack+react+es6(第3篇)

    接上篇 : webpack学习(六)—webpack+react+es6(第2篇) 上篇其实是有问题的,问题在取服务器数据这块.this.props 表示那些一旦定义,就不再改变的特性,而 this. ...

  9. Apex语言(六)数组

    1.数组 数组能保存多个数据,每一个数据称为数组元素,元素的个数称为数组的长度. 数组元素的类型必须相同,元素的类型就是数组的类型. 数组元素在数组中都有一个编号,称为数组下标.下标从0开始编号,通过 ...

  10. .NET Framework 3.5 安装

    今天vCenter服务器悲剧了,只好火速重新部署新vCenter服务器... Windows server 2016 中,安装VCenter 5.5 提示  未安装 .NET Framework 3. ...