包含
注解 + 反射
interface PersonRepository extends PagingAndSortingRepository<Person, String> {
// @Query("SELECT * FROM person WHERE name = :name")
// List<Person> findByLastname(String lastname);
// 上下等价
List<Person> findByLastname(String lastname);
}
流程
findByLastname
-> Lastname
对应的实体有没有@Column
注解 -> 有注解 Lastname = name
SELECT * FROM person WHERE name = :name
-> mate -> 有注解 name = Lastname
-> setter
选用这种orm没问题,再来看看starter-jdbc
starter-jdbc的一个很大的缺点就是,每一个bean都会和sql执行绑定,重复且繁琐.现在的好消息是orm以及帮我们解决了这个,但是orm维护的bean,不灵活.
比如一个很复杂的sql返回了,各部门薪资前三的员工,这是一个联表,很明显无法映射到两各类中.
jdbc有两种风格
现在1.解决了.2,灵活适合这种情况下.
func map(
new map
List<Actor> actors = this.jdbcTemplate.query(
"select first_name, last_name from t_actor",
new RowMapper<Actor>() {
public void mapRow(ResultSet rs, int rowNum) throws SQLException {
map.put("first_name", rs.getString("first_name"));
map.put("last_name", rs.getString("last_name"));
}
});
return map
)
存在线程竞争,可以考虑concurrent包。
springboot学习 spring-boot-starter-data-jdbc
原文:https://www.cnblogs.com/zeerbeer/p/14696656.html