Spring JDBC數據庫開發
阿新 • • 發佈:2018-03-25
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 {javabean2 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 }
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數據庫開發