1.appliactionContext.xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" 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.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql:///spring"></property> <property name="username" value="root"></property> <property name="password" value=""></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="userDao" class="cn.happy.impl.UserDAOImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans>
2.接口:IUserDAO.java
public interface IUserDAO { public void addUser(User user); public void deleteUser(int id); public void updateUser(User user); public String searchUserName(int id); public User searchUser(int id); public List<User> findAll(); }
3.接口實現類:UserDAOImpl.java
Spring提供了JdbcDaoSupport支持類,所有DAO繼承這個類,就會自動獲得JdbcTemplate(前提是注入DataSource)。
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="userDao" class="cn.happy.impl.UserDAOImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean>
JdbcTemplate主要提供下列方法:
1、execute方法:可以用於執行任何SQL語句,一般用於執行DDL語句;
2、update方法及batchUpdate方法:update方法用於執行新增、修改、刪除等語句;batchUpdate方法用於執行批處理相關語句;
3、query方法及queryForXXX方法:用於執行查詢相關語句;
4、call方法:用於執行存儲過程、函數相關語句。
public class UserDAOImpl extends JdbcDaoSupport implements IUserDAO { public void addUser(User user) { String sql = "insert into user values(?,?,?)"; this.getJdbcTemplate().update(sql, user.getId(), user.getUsername(), user.getPassword()); } public void deleteUser(int id) { String sql = "delete from user where id=?"; this.getJdbcTemplate().update(sql, id); } public void updateUser(User user) { String sql = "update user set username=?,password=? where id=?"; this.getJdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getId()); } public String searchUserName(int id) {// 簡單查詢,按照ID查詢,返回字符串 String sql = "select username from user where id=?"; // 返回類型為String(String.class) return this.getJdbcTemplate().queryForObject(sql, String.class, id); } public List<User> findAll() {// 復雜查詢返回List集合 String sql = "select * from user"; return this.getJdbcTemplate().query(sql, new UserRowMapper()); } public User searchUser(int id) { String sql="select * from user where id=?"; return this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id); } class UserRowMapper implements RowMapper<User> { //rs為返回結果集,以每行為單位封裝著 public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); return user; } } }
4.測試類:UserTest.java
public class UserTest { @Test//增 public void demo1(){ User user=new User(); user.setId(3); user.setUsername("admin"); user.setPassword("123456"); ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao"); dao.addUser(user); } @Test//改 public void demo2(){ User user=new User(); user.setId(1); user.setUsername("admin"); user.setPassword("admin"); ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao"); dao.updateUser(user); } @Test//刪 public void demo3(){ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao"); dao.deleteUser(3); } @Test//查(簡單查詢,返回字符串) public void demo4(){ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao"); String name=dao.searchUserName(1); System.out.println(name); } @Test//查(簡單查詢,返回對象) public void demo5(){ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao"); User user=dao.searchUser(1); System.out.println(user.getUsername()); } @Test//查(復雜查詢,返回對象集合) public void demo6(){ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); IUserDAO dao=(IUserDAO) applicationContext.getBean("userDao"); List<User> users=dao.findAll(); System.out.println(users.size()); } }