zoukankan      html  css  js  c++  java
  • springboot集成持久化框架

    1 springboot 集成 mybatis:1 注解开发 2 XML文件开发
    1 引入mybatis依赖的jar包 ,有多个版本
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.2.0</version>
    2 配置mybatis文件的扫描路径
    mybatis:
    typeAliasesPackage: org.cv.sf.repository.mybatis
    mapperLocations: classpath:mapper/*.xml
    1 java文件的扫描:这个可以不要,因为下面开启了MapperScan扫描注册IOC容器了,相当于重复了吧
    2 XML文件的扫描:这个如果没有,会报一个绑定异常的错,也就是接口的方法绑定不了一个具体实现、
    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    org.cv.sf.repository.mybatis.FileMapper.findById] with root cause
    3 springboot扫描注册:应该是注册到iOS容器,方便使用
    @MapperScan("org.cv.sf.repository.mybatis")
    1 File findById(@Param("id")int id);
    2 如果不开启这个扫描,IOC容器是无法注册这个对象的也就无法使用
    3 至于它是如何把一个接口,创建一个实现对象的那就是框架的底层具体实现了
    4 XML文件的编写
    1 <mapper namespace="org.cv.sf.repository.mybatis.FileMapper">
    2 <resultMap id="BaseResultMap" type="org.cv.sf.entity.File">
    3 <select id="findById" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    SELECT * FROM LIN_FILE WHERE ID = #{id}
    </select>

    5 使用
    1 分页
    2 复杂查询
    6 注解开发
    1 在类上打上mapper注解
    2 在方法上使用增删改查注解


    7 集成 mybatis-plus
    1 mybatis-plus 是对mybatis的增强封装,是在mybatis的基础上
    2 使用mybatis-plus的依赖jar就不需要再引用mybatis的依赖
    3 <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.0</version>
    4 使用
    1 public interface FileMapper extends BaseMapper<FileDO>
    继承一个BaseMapper,这个和jpa很相似
    2 实体类上不能加上@entity的注解,这是jpa持久化的注解
    3 要使用basemapper里实现的方法,否则就会报绑定异常,没有具体的方法实现
    4 @TableName 注解而不是jpa里的@Table注解
    8 总结
    1 springboot 集成时需要有一个扫描注册IOC的动作


    2 springboot 集成 hibernate
    1 持久性框架,全自动的ORM框架,不需要关心SQL的编写,实现了jpa的规范,springboot中,jpa的默认实现就是hibernate
    Hibernate 是一个高性能的对象/关系映射(ORM)持久化存储和查询的服务,不仅负责从Java类到数据库表的映射
    (还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制
    2jar包可以用spring data jpa 的jar,因为底层就是hibernate
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    3 实体类的ORM 映射注解
    4 dao 操作使用的是EentityManager,这个类里封装了所以对数据库的操作
    5 使用时要加上事物 @Transactional 不然就没有事物


    3 Springbooot 集成jpa
    1 引用jar
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    2 实体映射 在实体上加@entity @id 等 ORM注解
    3 dao extends JpaRepository :里面封装了很多简单的对数据库的操作
    4 jpa可以根据方法名映射成SQL语句,只要遵循jpa的方法名和SQL语句映射规则
    5 可以在方法上写原生SQL或者hql,@Query注解


    3 集成JDBC
    1 ResultSet PreparedStatement,最原生的这两个jdbc类每一次使用太过麻烦,所以一般会进行封装,更好用一点,而不是直接操作这两个类
    2 我们都知道使用原始的JDBC在操作数据库是比较麻烦的,所以Spring为了提高开发的效率,顺带着就把JDBC封装、改造了一番,
    而JdbcTemplate就是Spring对原始JDBC封装之后提供的一个操作数据库的工具类。
    Tips:凡是我们看到xxxTemplate的类,都是Spring对xxx的封装的模板类。
    3 使用工具类里的方法就可以
    1 NamedParameterJdbcTemplate 对于参数和SQL语句的重新构造更方便一点,采用的map集合和':',替换的方式
    2 JdbcTemplate 采用的是?占位符替换,PreparedStatementSetter ,重写setValue方法,创建PreparedStatement 对象的方式
    重构SQL语句相对复杂一点
    遇到一个坑,就是查询单条的时候用PreparedStatementSetter 替换会出问题,不知道啥问题


    4 集成测试
    1 JUNIT jar 包,springboot test 包内包含
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    2 在方法上加上@Test 注解就可以直接启动方法
    3 springboot 测试
    1 @RunWith(SpringRunner.class)
    @SpringBootTest(classes = studyJpaApplication.class)
    2 要加上这两个注解,这样才能使用spring的IOC容器DI依赖注入

  • 相关阅读:
    基于Memcached的tomcat集群session共享所用的jar及多个tomcat各种序列化策略配置
    response.getWriter().write()和 response.getWriter().print()的区别
    response.getWriter().write()与out.print()的区别
    跳转到页面后加载一个请求的方法
    【遍历集合】Java遍历List,Map,Vector,Set的几种方法
    Java中通过方法创建一个http连接并请求(服务器间进行通信)
    【tomcat】手动部署动态JavaWeb项目到tomcat
    【Eclipse】Eclipse中修改项目的映射名称与端口
    使用Cookie进行会话管理
    操作系统内核框架图整理
  • 原文地址:https://www.cnblogs.com/jianyi12/p/14423426.html
Copyright © 2011-2022 走看看