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

原文地址:https://www.cnblogs.com/jianyi12/p/14423426.html