zoukankan      html  css  js  c++  java
  • springBoot数据库jpa+对接mybatis

    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);
    }
  • 相关阅读:
    为页面上某些文本框添加离开验证输入事件
    学习之UML类图符号
    djangomagic blog
    验证码识别基础方法及源码
    LINQ TO XML实用解析
    解决ASP.NET中的各种乱码问题
    ASP.NET 1.1 ~ 4.0 中的哈希碰撞漏洞
    断点续传下载文件
    SQL Server资源
    Python图片浏览器
  • 原文地址:https://www.cnblogs.com/lkdirk/p/7079905.html
Copyright © 2011-2022 走看看