クラシックなデータベースのアクセス層を実現しました。
これは本人が各種の最適化技術を通じて実現した古典的なデータベース訪問層です。
データソース用のことはDBCPオープンパッケージです。
Springフレームを使って提供したJdbcTemplateは私が書いたデータベースの代わりにとてもいい選択です。私はJdbcTemplateの思想で書いたのです。でもそれに比べてかなりの差があります。だから、実際のプロジェクトの中でもJdbcTemplateを使っています。
データソース用のことはDBCPオープンパッケージです。
Springフレームを使って提供したJdbcTemplateは私が書いたデータベースの代わりにとてもいい選択です。私はJdbcTemplateの思想で書いたのです。でもそれに比べてかなりの差があります。だから、実際のプロジェクトの中でもJdbcTemplateを使っています。
public class UserDaoSpringImpl implements UserDao {
private SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(JdbcUtils.getMyDataSource());
@Override
public void addUser(User user) {
String sql = "insert into user(name,password,birthday,money) values(:name,:password,:birthday,:money)";
SqlParameterSource paramSource = new BeanPropertySqlParameterSource(user);
KeyHolder keyHolder = new GeneratedKeyHolder();
this.simpleJdbcTemplate.getNamedParameterJdbcOperations().update(sql, paramSource, keyHolder);
user.setId(keyHolder.getKey().longValue());
}
@Override
public void delete(User user) {
String sql = "delete from user where id=?";
Object[] args = new Object[] { user.getId() };
this.simpleJdbcTemplate.update(sql, args);
}
@Override
public User findUser(String loginName, String password) {
String sql = "select name,password,birthday,money from user where name=? and password=?";
Object[] args = new Object[] { loginName, password };
User user = (User) this.simpleJdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), args);
return user;
}
@Override
public User getUser(int userId) {
String sql = "select id,name,password,birthday,money from user where id=?";
Object[] args = new Object[] { userId };
User user = (User) this.simpleJdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), args);
return user;
}
@Override
public String getUserName(int id) {
String sql = "select name from user where id=?";
String name = (String) this.simpleJdbcTemplate.queryForObject(sql, String.class, id);
return name;
}
@Override
public void update(User user) {
String sql = "update user set name=:name,password=:password,birthday:=birthday,money=:money where id=:id";
SqlParameterSource paramterSource = new BeanPropertySqlParameterSource(user);
this.simpleJdbcTemplate.update(sql, paramterSource);
}
}