Java是一種面向對象的編程語言,而DAO模式是Java語言在三層架構中常用的數據訪問設計模式。三層架構將應用程序分成三個主要部分:顯示層、業務層和數據訪問層。其中,DAO模式是數據訪問層的核心。
熟悉Java開發的人都知道,在使用Java語言進行Web開發時,通常采用MVC設計模式,將應用程序分為“模型、視圖、控制器”三層。而在MVC模式中,數據訪問通常由模型層實現。而DAO是一種典型的模型層實現方案,它使得數據的訪問、更新與業務邏輯分離。
public interface UserDao{ public User findById(int id); public ListfindByName(String name); public boolean add(User user); public boolean delete(int id); public boolean update(User user); }
上述代碼中,定義了一個UserDao接口,其中定義了幾種不同的方法來訪問數據庫中的用戶數據。這些方法實現了數據的讀取、插入、刪除和更新。而具體的數據訪問方法實現則可以交由不同的類實現,例如JdbcTemplate等。
在上述Java DAO模式中,我們可以使用Spring框架的IOC和AOP兩個核心技術實現界面層、業務邏輯層和數據訪問層的分離。下面的代碼通過Spring框架來實現UserDao接口:
@Repository public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate;//JdbcTemplate是Spring框架提供的JDBC訪問模板 public User findById(int id){ final String sql = "SELECT * FROM user WHERE id=?"; return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper(User.class)); } public List findByName(String name){ final String sql = "SELECT * FROM user WHERE name=?"; return jdbcTemplate.query(sql, new Object[]{name}, new BeanPropertyRowMapper (User.class)); } public boolean add(User user){ final String sql = "INSERT INTO user(id,name) VALUES(?,?)"; int update = jdbcTemplate.update(sql, user.getId(), user.getName()); return update==1; } public boolean delete(int id){ final String sql = "DELETE FROM user WHERE id=?"; int update = jdbcTemplate.update(sql, id); return update==1; } public boolean update(User user){ final String sql = "UPDATE user SET name=? WHERE id=?"; int update = jdbcTemplate.update(sql, user.getName(), user.getId()); return update==1; } }
上述代碼中,我們通過@Autowired注解和JdbcTemplate來實現對數據庫的訪問。在Spring框架里,@Repository注解是對DAO層的封裝,標識在這個類中有數據訪問層的操作。BeanPropertyRowMapper是一個Spring框架提供的數據映射工具,將數據庫中查詢結果映射成java對象。
下一篇css為啥要添加浮動