Discuss / Java / 使用DAO模式

使用DAO模式

Topic source

净净一隅

#1 Created at ... [Delete] [Delete and Lock User]

.....

@Autowired
UserDao userDao;

......

@Transactional
public User register(Register registerInfo) throws SQLException{
System.out.println("开始注册");
String email=registerInfo.getEmail();
String name=registerInfo.getUsername();
String password=registerInfo.getPassword();
User user;
try{
this.userDao.getUserByEmail(email);
throw new RuntimeException(email+" exists. please go to [sign in]");
}catch (EmptyResultDataAccessException e){}

user=this.userDao.createUser(name,email,password);
user.setName(name);
user.setEmail(email);
user.setPassword(password);
//添加注册积分
this.addBonus(user.getId());
return user;
}

@Component
public class UserDao extends AbstractDao<User>{
public User getUserByEmail(String email){
return this.getJdbcTemplate().queryForObject("select id,name,email,password from user where email=? limit 1",
new Object[]{email},new BeanPropertyRowMapper<>(User.class));
}

public long queryUserByEmail(String email){
return this.getJdbcTemplate().queryForObject("select count(1) from user where email=?",
new Object[]{email}, (ResultSet rs, int rowNum) -> {
// SELECT COUNT(*)查询只有一列,取第一列数据:
return rs.getLong(1);
});
}

@Transactional
public User createUser(String name,String email,String password){
KeyHolder holder=new GeneratedKeyHolder();
if(1!=this.getJdbcTemplate().update(
(conn)-> {
PreparedStatement ps=conn.prepareStatement(
"insert into user(name,email,password) values(?,?,?)", Statement.RETURN_GENERATED_KEYS);
ps.setObject(1,name);
ps.setObject(2,email);
ps.setObject(3,password);
return ps;
},
holder
)){
throw new RuntimeException("Insert failed");
}
User user=new User();
user.setId(holder.getKey().longValue());
return user;
}
}

净净一隅

#2 Created at ... [Delete] [Delete and Lock User]

另一个查询方法getUserByEmail

public User getUserByEmail(String email){
return this.getJdbcTemplate().queryForObject("select id,name,email,password from user where email=? limit 1",
new Object[]{email},new BeanPropertyRowMapper<>(User.class));
}


  • 1

Reply