1. 程式人生 > >Spring JDBC數據庫開發

Spring JDBC數據庫開發

class .class play prop 用戶操作 source display auto getbean

針對數據庫操作,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 技術分享圖片
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("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數據庫開發