summaryrefslogtreecommitdiff
path: root/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-04-25 21:53:33 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-04-25 21:53:33 +0530
commit4afcff940551079617e8f4116e52bb0ef9df7fcc (patch)
treecbaed6a2a53c7d032bfafaa38b94e4fc607f3e76 /spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao
parent7b08f1155e1cb8bf263c3570eeb119970407a037 (diff)
Added Spring Framework sample code
Diffstat (limited to 'spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao')
-rw-r--r--spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/UserDAO.java14
-rw-r--r--spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/dao/jdbc/JDBCUserDAO.java94
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