1  spring Data jpa

hibernate引领数据访问技术,使用orm对象关系映射来进行数据库访问,通过模型和数据库进行映射,通过操作对象实现对数据库操作,把数据库相关操作从代码中独立出来。随着hibernate盛行,hibernate主导了JPA规范,即 java persistence api。jps是一个基于orm映射的标准,主要实现有hibernate,eclipselinke,openjpa等。springDataJPA是spirng data的一个子项目,提供了基于jpa的Repository接口,极大减少了数据访问的代码开发。

spring boot 对jpa的自动配置,放在org.springframework.boot.autoconfigure.com.jpa下面,包含hibernate的自动配置,说明spring默认jpa的实现者是hibernate。JpaProperties里面,使用的配置是@ConfigurationProperties(prefix = "spring.jpa"),所以在配置数据库连接属性时以这个为开头。在JpaBaseConfiguration里面,自动配置了transactionManager,jpaVendorAdapter,enetityMappingFactory等bean,还包含一个getPackagesToScan方法,用于扫描所有@Entity的bean。对于使用hibernate时页面出现的会话连接关闭错误,也自动配置了open session in view 过滤器 OpenEntityManagerInViewIntegerceptor,非常方便。

(1)配置数据库连接 和引入mvn

  引入mvn配置,以mysql为例,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.21</version>
</dependency>

通过property配置需要的数据库参数,如:

spring.datasource.url=jdbc:mysql://10.72.218.15:3306/MerchantQrCode?characterEncoding=UTF8&socketTimeout=60000
spring.datasource.username=merchantqrcode
spring.datasource.password=dp!@BJudIZgTA
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

(2)定义数据访问层

继承JpaRepository接口,  如

public interface ShopTypeRepository extends JpaRepository<BcQrSceneShopType,Integer> ,继承接口后会自动注入,不需要加@configuration @bean等进行配置,可以直接@Autowired注入使用。继承JpaRepository接口,就已经默认可以使用下面一些基础方法:

(3)定制查询

spingdata jpa 支持通过定义在repository接口中的方法名来定义查询,例如  findByName(String name) 就会以name为列进行查询,findByNameLike 相当于name like xxx ,其中findBy可以用find,read,query,queryBy,get,getBy 来代替。各种定义规范实例如下表:

如果想限制数量,可以使用findFirst10ByName这种,如果要使用排序,可以使用sort对象,如 findByName("xxx",new Sort(Derection.ASC,"age")),如果想使用分页,就用PageRequest,如findByName("xx",new PageRequest(0,10))。如果排序+分页,就在PageRequest里面再加个sort对象参数。

2 接入mybatis

首先加入mybatis依赖,

<dependency>
             <groupId>org.mybatis.spring.boot</groupId>
             <artifactId>mybatis-spring-boot-starter</artifactId>
             <version>1.1.1</version>
    </dependency>

然后编写dao,注意加上@Mapper,使用起来和正常mybatis一样,然后在调用处直接注入即可。

@Mapper
public interface QrcodeDAO { @Select("select count(1) from BC_QR_Scene")
int findCount(); @Select("select ID,Name,SceneCode from BC_QR_Scene where ID = #{id}")
QrCodeScene findById(@Param("id")int id);
}

springBoot数据库jpa+对接mybatis的更多相关文章

  1. springboot整合jpa和mybatis实现主从复制

    百度多方参考终于配出我自己的了,以下仅供参考 参考https://www.cnblogs.com/cjsblog/p/9712457.html 代码 首先数据源配置 spring.datasource ...

  2. springboot集成jpa操作mybatis数据库

    数据库如下 CREATE TABLE `jpa`.`Untitled` ( `cust_id` bigint() NOT NULL AUTO_INCREMENT, `cust_address` var ...

  3. SpringBoot的学习二:整合Redis,JPA,Mybatis

    Redis介绍: 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API 特性: Redis 与其他 key - value 缓 ...

  4. 第11章—使用对象关系映射持久化数据—SpringBoot+SpringData+Jpa进行查询修改数据库

    SpringBoot+SpringData+Jpa进行查询修改数据库 JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分.但它又不限于EJB 3.0,你可以在Web应用.甚至桌面应用 ...

  5. 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

    使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页      JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...

  6. SpringBoot+神通数据库+JPA

    先上原文 https://blog.csdn.net/Helloworld_pang/article/details/114266130 一.SpringBoot + 神通数据库 基本上按照上面的参考 ...

  7. Spring Data JPA系列2:SpringBoot集成JPA详细教程,快速在项目中熟练使用JPA

    大家好,又见面了. 这是Spring Data JPA系列的第2篇,在上一篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring Data JPA,傻傻分不清楚?给你个 ...

  8. spring jpa和mybatis整合

    spring jpa和mybatis整合 前一阵子接手了一个使用SpringBoot 和spring-data-jpa开发的项目 后期新加入一个小伙伴,表示jpa相比mybatis太难用,多表联合的查 ...

  9. 持久层框架JPA与Mybatis该如何选型

    一.现状描述 目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis.JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernat ...

随机推荐

  1. 解决:AttributeError: module 'requests' has no attribute 'get'”

    今天学习Requests库,当用pip install requests安装后,写了一段代码报错:AttributeError: module 'requests' has no attribute ...

  2. hdu 2087 kmp

    http://acm.hdu.edu.cn/showproblem.php?pid=2087 算是模板题吧,找到一个子串之后将模板串指针归零否则会重复计算. #include<bits/stdc ...

  3. mac下编译安装grafana 4.2.0

    go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发. 下面介绍在Mac OS X中golang的开发环境配置. 1.安装brew brew是一个mac下的由ruby开发 ...

  4. jspm

    1.简介 JavaScript 模块的写法有几种,比如 AMD,CommonJS .. 还有标准化的 ES6 的写法 .. jspm 支持加载所有的用这些方法写的 JavaScript 模块 在你的应 ...

  5. SVN服务器端客户端配置, 及对比VSS的优势

    SVN 版本服务器搭配全过程详解(含服务端.客户端) SVN服务器端及客户端全套软件 SVN对比VSS的优势 两者区别:http://www.cnblogs.com/zxjyuan/archive/2 ...

  6. mysql 视图、触发器、事物、存储过程、函数

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  7. AOP注解式拦截

    1. 自己定义的拦截注解 package com.spring.aop; import java.lang.annotation.Documented; import java.lang.annota ...

  8. 魔法效果——dijkstra+堆(邻接表存储)

    dijkstra本身每次要for一遍,才能找出最小的节点,但用了堆之后,直接取出堆首就可以了. 但要注意的一点是,c++自带的stl里的priority_queue本身是先入大出的,而我们要求的是最小 ...

  9. freemarker实现第一个HelloWorld

    第一步:引入freemarker jar包 第二步:创建templates下的test01.ftl 第三步:在web.xml下 第四步:编写后台代码 package com.wisezone.test ...

  10. LeetCode 480. Sliding Window Median

    原题链接在这里:https://leetcode.com/problems/sliding-window-median/?tab=Description 题目: Median is the middl ...