您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

springboot学习 spring-boot-starter-data-jdbc

bubuko 2022/1/25 19:10:08 java 字数 2250 阅读 739 来源 http://www.bubuko.com/infolist-5-1.html

starter-data-jdbc 包含 配置 starter-jdbc data-jdbc https://docs.spring.io/spring-data/jdbc/docs/2.2.0/reference/html/#project data-jdbc 注解 + 反射 interface ...

starter-data-jdbc

包含

  1. 配置
  2. starter-jdbc
  3. data-jdbc https://docs.spring.io/spring-data/jdbc/docs/2.2.0/reference/html/#project

data-jdbc

注解 + 反射

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

starter-jdbc的一个很大的缺点就是,每一个bean都会和sql执行绑定,重复且繁琐.现在的好消息是orm以及帮我们解决了这个,但是orm维护的bean,不灵活.

比如一个很复杂的sql返回了,各部门薪资前三的员工,这是一个联表,很明显无法映射到两各类中.

jdbc有两种风格

  1. bean-base 缺点复杂用spring-data-jdbc解决
  2. map-base 缺点认为所有结果都是map,而map不好读.(只看代码你无法知道map有什么?需要看sql语句)

现在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


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶