• 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依赖注入

  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/jianyi12/p/14423426.html
Copyright © 2020-2023  润新知