diff options
| author | Kamal Wickramanayake <kamal@inbox.lk> | 2026-04-25 21:53:33 +0530 |
|---|---|---|
| committer | Kamal Wickramanayake <kamal@inbox.lk> | 2026-04-25 21:53:33 +0530 |
| commit | 4afcff940551079617e8f4116e52bb0ef9df7fcc (patch) | |
| tree | cbaed6a2a53c7d032bfafaa38b94e4fc607f3e76 /spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao | |
| parent | 7b08f1155e1cb8bf263c3570eeb119970407a037 (diff) | |
Added Spring Framework sample code
Diffstat (limited to 'spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao')
2 files changed, 108 insertions, 0 deletions
diff --git a/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/UserDAO.java b/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/UserDAO.java new file mode 100644 index 0000000..b0215b1 --- /dev/null +++ b/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/UserDAO.java @@ -0,0 +1,14 @@ +package com.example.fp.dao; + +import java.util.List; + +import com.example.fp.User; + +public interface UserDAO { + public void create(User user); + public User find(int uid); + public User find(String username); + public void delete(int uid); + public List<User> findAll(); + public void update(User user); +} diff --git a/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/jdbc/JDBCUserDAO.java b/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/jdbc/JDBCUserDAO.java new file mode 100644 index 0000000..80d77af --- /dev/null +++ b/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/jdbc/JDBCUserDAO.java @@ -0,0 +1,94 @@ +package com.example.fp.dao.jdbc; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +import javax.sql.DataSource; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.PreparedStatementCreator; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.support.GeneratedKeyHolder; +import org.springframework.jdbc.support.KeyHolder; + +import com.example.fp.User; +import com.example.fp.dao.UserDAO; + +public class JDBCUserDAO implements UserDAO { + + private JdbcTemplate jdbcTemplate; + + public void setDataSource(DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + + @Override + public void create(User user) { + + final String INSERT_SQL = "insert into user_account (username, full_name, password, active) values(?, ?, ?, ?)"; + + KeyHolder keyHolder = new GeneratedKeyHolder(); + jdbcTemplate.update( + new PreparedStatementCreator() { + public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { + PreparedStatement ps = + connection.prepareStatement(INSERT_SQL, new String[] {"uid"}); + ps.setString(1, user.getUsername()); + ps.setString(2, user.getFullName()); + ps.setString(3, user.getPassword()); + ps.setInt(4, user.isActive() ? 1 : 0); + return ps; + } + }, keyHolder); + + // keyHolder.getKey() now contains the generated key + user.setUid(keyHolder.getKey().intValue()); + } + + @Override + public void delete(int uid) { + jdbcTemplate.update("delete from user_account where uid = ?", Integer.valueOf(uid)); + } + + @Override + public List<User> findAll() { + return this.jdbcTemplate.query( "select * from user_account", new UserMapper()); + } + + + @Override + public User find(int uid) { + return this.jdbcTemplate.queryForObject( "select * from user_account where uid = ?", new Object[] {Integer.valueOf(uid)}, new UserMapper()); + } + + + @Override + public User find(String username) { + return this.jdbcTemplate.queryForObject( "select * from user_account where username = ?", new Object[] {username}, new UserMapper()); + } + + + @Override + public void update(User user) { + this.jdbcTemplate.update("update user_account set username = ?, full_name = ?, password = ?, active = ? where uid = ?", + user.getUsername(), user.getFullName(), user.getPassword(), user.isActive() ? 1 : 0, user.getUid()); + } + + + private static final class UserMapper implements RowMapper<User> { + + public User mapRow(ResultSet rs, int rowNum) throws SQLException { + User user = new User(); + user.setUid(rs.getInt("uid")); + user.setUsername(rs.getString("username")); + user.setFullName(rs.getString("full_name")); + user.setPassword(rs.getString("password")); + user.setActive(rs.getBoolean("active")); + return user; + } + } +}
\ No newline at end of file |
