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. python中的SMTP发送邮件

    一. 介绍 python3中自带了smtplib模块和email模块 smtplib模块:负责与邮件服务器的交互 email模块:负责组织邮件内容 二. smtplib模块 smtplib模块:主要是 ...

  2. java学习笔记 --- IO(2)

    IO流的分类:  流向:  输入流  读取数据  输出流 写出数据  数据类型: 字节流 字节输入流  读取数据 InputStream 字节输出流  写出数据 OutputStream 字符流 字符 ...

  3. CodeForces - 799B-T-shirt buying (优先队列)

    题目链接 /* Name: Copyright: Author: Date: 2018/5/2 16:09:54 Description:优先队列 */ #include <iostream&g ...

  4. codeforces D. Area of Two Circles' Intersection 计算几何

    D. Area of Two Circles' Intersection time limit per test 2 seconds memory limit per test 256 megabyt ...

  5. msyql acid特性

    以下内容出自<高性能MySQL>第三版,了解事务的ACID及四种隔离级有助于我们更好的理解事务运作. 下面举一个银行应用是解释事务必要性的一个经典例子.假如一个银行的数据库有两张表:支票表 ...

  6. git常用命令收藏

    git init //初始化本地git环境 git clone XXX//克隆一份代码到本地仓库 git pull //把远程库的代码更新到工作台 git pull --rebase origin m ...

  7. PostgreSQL学习手册 性能提升技巧

    http://www.cnblogs.com/mchina/archive/2012/08/11/2537393.html 一.使用EXPLAIN:    PostgreSQL为每个查询都生成一个查询 ...

  8. npm init node 通过指令创建一个package.json文件及npm安装package.json

    描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...

  9. AMD 规范

    AMD(异步模块定义)是为浏览器环境设计的,因为 CommonJS 模块系统是同步加载的,当前浏览器环境还没有准备好同步加载模块的条件. AMD 定义了一套 JavaScript 模块依赖异步加载标准 ...

  10. 【转】深入剖析Java中的装箱和拆箱

    深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...