package com.dao.impl; import com.dao.UserDao; import com.domain.Role; import com.domain.User; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; import java.util.Map; public class UserDaoImpl implements UserDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public List findAll() { List userList = jdbcTemplate.query("select * from sys_user", new BeanPropertyRowMapper(User.class)); return userList; } public Long save(final User user) { //创建PreparedStatementCreator PreparedStatementCreator creator = new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { //使用原始jdbc完成有个PreparedStatement的组建 PreparedStatement preparedStatement = connection.prepareStatement("insert into sys_user values(?,?,?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS); preparedStatement.setObject(1,null); preparedStatement.setString(2,user.getUsername()); preparedStatement.setString(3,user.getEmail()); preparedStatement.setString(4,user.getPassword()); preparedStatement.setString(5,user.getPhoneNum()); return preparedStatement; } }; //创建keyHolder GeneratedKeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(creator,keyHolder); //获得生成的主键 long userId = keyHolder.getKey().longValue(); return userId; //返回当前保存用户的id 该id是数据库自动生成的 } public void saveUserRoleRel(Long userId, Long[] roleIds) { for (Long roleId : roleIds) { jdbcTemplate.update("insert into sys_user_role values(?,?)",userId,roleId); } } public void delUserRoleRel(Long userId) { jdbcTemplate.update("delete from sys_user_role where userId=?",userId); } public void del(Long userId) { jdbcTemplate.update("delete from sys_user where id=?",userId); } public User findByUsernameAndPassword(String username, String password) throws EmptyResultDataAccessException { User user = jdbcTemplate.queryForObject("select * from sys_user where username=? and password=?", new BeanPropertyRowMapper(User.class), username, password); return user; } }