,public class UserDao {
@Autowired
JdbcTemplate jdbcTemplate;
}
进化版,设置一个抽象类,Dao类直接继承该抽象类
public abstract class AbstractDao extends JdbcDaoSupport {
@Autowired
private JdbcTemplate jdbcTemplate;
@PostConstruct
public void init() {
super.setJdbcTemplate(jdbcTemplate);
}
}
public class UserDao extends AbstractDao {
public User getById(long id) {
return getJdbcTemplate().queryForObject(
"SELECT * FROM users WHERE id = ?",
new BeanPropertyRowMapper<>(User.class),
id
);
}
}
注:Spring提供了一个JdbcDaoSupport类,用于简化DAO的实现。这个JdbcDaoSupport没什么复杂的,核心代码就是持有一个JdbcTemplate:
究极进化版,使用泛型,并提供常用增删改查方法(懒人专属)
public abstract class AbstractDao<T> extends JdbcDaoSupport {
@Autowired
private JdbcTemplate jdbcTemplate;
private String table;
private Class<T> entityClass;
private RowMapper<T> rowMapper;
public AbstractDao() {
this.entityClass = getParameterizedType();
this.table = this.entityClass.getSimpleName().toLowerCase() + "s";
this.rowMapper = new BeanPropertyRowMapper<>(entityClass);
}
@PostConstruct
public void init() {
super.setJdbcTemplate(jdbcTemplate);
}
public T getById(long id) {
return getJdbcTemplate().queryForObject("SELECT * FROM " + table + " WHERE id = ?", this.rowMapper, id);
}
}
//使用时每个子类就已经有了这些方法
public class BookDao extends AbstractDao<Book> {
// 已经有了:
// Book getById(long)
}
Loading...
基础版,dao里面直接注入jdbcTemplate
进化版,设置一个抽象类,Dao类直接继承该抽象类
究极进化版,使用泛型,并提供常用增删改查方法(懒人专属)