一、配置Spring JDBC
1.導入相關jar包
(略)
2.配置文件applicationContext.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置數據源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <!-- 驅動類名 --> <property name="url" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=news" />
<!-- url訪問地址 --> <property name="username" value="sa" /><!-- 鏈接數據庫的用戶名 --> <property name="password" value="12345yehuan" /><!-- 鏈接數據庫的密碼 --> </bean>
<!-- 配置Jdbc模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 默認必須使用數據源注入值 --> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 配置id為userDAO的Bena --> <bean id="userDAO" class="com.springmvc.controller.UserDAOImpl"> <!-- 將jdbcTemplate實例注入到userDAO的實例中來 --> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans>
定義JdbcTemplate時,需要將dataSource注入到JdbcTemplate中,對於其他需要使用JdbcTemplate的Bean,也需要將JdbcTemplate注入到該Bean中(通常注入到數據訪問層Dao類中,在Dao中進行與數據庫相關的操作,如上方配置中的userDAO Bean)。
3.操作示例
用戶(老師)類:
package com.springmvc.controller; public class User { private int id; //用戶id private String userName; //用戶名 private String password; //用戶密碼 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } //重寫toString方法 @Override public String toString() { return "User對象:"+id+" --- " +userName+" -- "+password; } }
UserDAOImpl類:
主要進行對數據庫的相關操作。
package com.springmvc.controller; import java.util.List; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; public class UserDAOImpl { // 聲明JdbcTemplate屬性及其setter方法 private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } // 添加用戶的實現方法 public int addUser(User user) { String sql = "insert into teacher(userName,password) values(?,?)"; // 使用數組來存儲SQL語句中的參數 Object[] object = new Object[] { user.getUserName(), user.getPassword() }; // 執行添加操作,返回的是受影響的記錄條數 int result = jdbcTemplate.update(sql, object); return result; } // 修改用戶的實現方法 public int updateUser(User user) { String sql = "update teacher set userName=?,password=? where id=?"; // 使用數組來存儲SQL語句中的參數 Object[] params = new Object[] { user.getUserName(), user.getPassword(), user.getId() }; // 執行修改操作,返回的是受影響的記錄條數 int result = jdbcTemplate.update(sql, params); return result; } // 刪除用戶的實現方法 public int deleteUser(int id) { String sql = "delete from teacher where id=?"; // 執行刪除操作,返回的是受影響的記錄條數 int result = jdbcTemplate.update(sql, id); return result; } // 通過id查詢單個用戶的實現方法 public User findUserById(int id) { // 定義單個查詢的SQL語句 String sql = "select * from teacher where id=?"; // 創建一個新的BeanPropertyRowMapper對象,將結果集通過Java的反射機制映射到Java對象中 RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class); // 將id綁定到SQL語句中,並通過RowMapper返回一個Object類型的對象 return this.jdbcTemplate.queryForObject(sql, rowMapper, id); } // 查詢所有用戶的實現方法 public List<User> findAllUser() { // 查詢所有用戶的SQL語句 String sql = "select * from teacher"; // 創建一個新的BeanPropertyRowMapper對象 RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class); // 執行靜態的SQL查詢,並通過RowMapper返回List集合類型的結果 return this.jdbcTemplate.query(sql, rowMapper); } }
測試類:
這里通過JUnit測試。
package com.ssm.test; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import com.springmvc.controller.UserDAOImpl; import com.springmvc.controller.User; public class TestJdbcTemplate { public static void main(String[] args) { //初始化Spring容器,加載applicationContext.xml文件 ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml"); //通過容器獲取JdbcTemplate的實例 JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate"); //定義SQL語句 String sql="create table user(id int primary key auto_increment, userName varchar(20),password varchar(32))"; //使用execute()方法執行SQL語句創建一個user用戶表 jdbcTemplate.execute(sql); System.out.println("用戶表user創建成功!"); } @Test public void addUserTest() { //初始化Spring容器,加載applicationContext.xml文件 ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml"); //通過容器獲取UserDAOImpl的實例 UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl"); //創建User對象,並向user中添加數據 User user=new User(); user.setUserName("yzpc"); user.setPassword("yzpc"); //執行addUser方法,並獲取返回結果 int result=UserDAOImpl.addUser(user); if (result>0) { System.out.println("成功向數據表中插入了 "+result+" 條記錄!"); }else { System.out.println("往數據表中插入數據失敗!"); } } @Test public void updateUserTest() { //初始化Spring容器,加載applicationContext.xml文件 ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml"); //通過容器獲取UserDAOImpl的實例 UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl"); //創建User對象,並向user中添加數據 User user=new User(); user.setId(1); user.setUserName("yzpc"); user.setPassword("123456"); //執行updateUser方法,並獲取返回結果 int result=UserDAOImpl.updateUser(user); if (result>0) { System.out.println("成功修改了 "+result+" 條記錄!"); }else { System.out.println("修改操作執行失敗!"); } } @Test public void deleteUserTest() { //初始化Spring容器,加載applicationContext.xml文件 ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml"); //通過容器獲取UserDAOImpl的實例 UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl"); //執行deleteUser方法,並獲取返回結果 int result=UserDAOImpl.deleteUser(1); if (result>0) { System.out.println("成功刪除了 "+result+" 條記錄!"); }else { System.out.println("刪除操作執行失敗!"); } } @Test public void findUserByIdTest() { //初始化Spring容器,加載applicationContext.xml文件 ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml"); //通過容器獲取UserDAOImpl的實例 UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl"); //執行findUserById方法,獲取User對象 User user=UserDAOImpl.findUserById(1); System.out.println(user); } @Test public void findAllUserTest() { //初始化Spring容器,加載applicationContext.xml文件 ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml"); //通過容器獲取UserDAOImpl的實例 UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl"); //執行findAllUser方法,獲取User對象的集合 List<User> users=UserDAOImpl.findAllUser(); //循環輸出集合中的對象 for (User user : users) { System.out.println(user); } } }