一、配置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); } } }