1、使用的是前面的UserDao
package cn.itcast.jdbc.dao;
import cn.itcast.jdbc.domain.User;
/**
* 针对用户的Dao
*/
public interface UserDao {
/**
* 添加用户
*/
public void addUser(User user);
/**
* 根据id查询用户
* @param userId
* @return
*/
public User getUser(int userId);
/**
* 用户登录,根据用户名和用户登录密码去查询用户
* @param loginName
* @param password
* @return
*/
public User findUser(String loginName, String password);
/**
* 更新用户
* @param user
*/
public void update(User user);
/**
* 删除用户
* @param user
*/
public void delete(User user);
}
2、定义Dao的Spring的实现
package cn.itcast.jdbc.dao.impl;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import cn.itcast.jdbc.JdbcUtils;
import cn.itcast.jdbc.dao.UserDao;
import cn.itcast.jdbc.domain.User;
/**
* 使用Spring中的SimpleJdbcTemplate实现Dao,
* 注意每个方法中调用的不同的方法的参数的写法是不一样的
*/
public class UserDaoSpringImpl implements UserDao {
private SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(
JdbcUtils.getDataSource());
public void addUser(User user) {
String sql = "insert into user (name, money, birthday) "
+ "values (:name, :money, :birthday)";
SqlParameterSource param = new BeanPropertySqlParameterSource(user);
KeyHolder keyHolder = new GeneratedKeyHolder();
//为了获取主键,这里要先获取JdbcTemplate中的所有方法
this.simpleJdbcTemplate.getNamedParameterJdbcOperations().update(sql,
param, keyHolder);
user.setId(keyHolder.getKey().intValue());
}
public void delete(User user) {
String sql = "delete from user where id=?";
this.simpleJdbcTemplate.update(sql, user.getId());
}
public User findUser(String loginName, String password) {
String sql = "select id, name, money, birthday "
+ "from user where name=?";
return this.simpleJdbcTemplate.queryForObject(sql,
ParameterizedBeanPropertyRowMapper.newInstance(User.class),
loginName);
}
public User getUser(int userId) {
String sql = "select id, name, money, birthday "
+ "from user where id=?";
return this.simpleJdbcTemplate.queryForObject(sql,
ParameterizedBeanPropertyRowMapper.newInstance(User.class),
userId);
}
public void update(User user) {
String sql = "update user set name=?, birthday=?, money=? where id=?";
//使用变长参数的方式
this.simpleJdbcTemplate.update(sql, user.getName(), user.getBirthday(),
user.getMoney(), user.getId());
sql = "update user set name=:name, birthday=:birthday, money=:money where id=:id";
//使用SqlParameterSource的方式
this.simpleJdbcTemplate.update(sql, new BeanPropertySqlParameterSource(
user));
}
}
3、修改daoconfig.properties中的代码
userDaoClass=cn.itcast.jdbc.dao.impl.UserDaoSpringImpl
4、编写测试类进行测试
package cn.itcast.jdbc.dao.impl;
import java.util.Date;
import org.junit.Before;
import org.junit.Test;
import cn.itcast.jdbc.dao.UserDao;
import cn.itcast.jdbc.domain.User;
public class TestUserDaoSpringImpl {
private UserDao dao;
@Before
public void init() {
dao = new UserDaoSpringImpl();
}
@Test
public void testAddUser() {
User user = new User();
user.setName("dema");
user.setBirthday(new Date());
user.setMoney(11f);
dao.addUser(user);
}
@Test
public void testDelete() {
User user = new User();
user.setId(200);
dao.delete(user);
}
@Test
public void testFindUser() {
dao.findUser("kaka", null);
}
@Test
public void testGetUser() {
dao.getUser(190);
}
@Test
public void testUpdate() {
User user = new User();
user.setId(2);
user.setBirthday(new Date());
user.setMoney(34f);
user.setName("aaa");
dao.update(user);
}
}