Spring JDBC数据库开发

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

1.Spring JDBC的配置

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

 1    <!--配置数据源-->
 2     <bean 
 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 >
11         <property name="dataSource" ref="dataSource"/>
12     </bean>
13     <!--配置注入类-->
14     <bean >
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
public interface UserDao {
    public void execute();
    public int addUser(User user);
    public int updateUser(User user);
    public int deleteUser(int id);
    public void query();
}
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     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
15         this.jdbcTemplate = jdbcTemplate;
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(">);
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 }