整合JPA
Spring Data
简介:
Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问技术,包括非关系数据库、
Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。
1、SpringData特点
SpringData为我们提供使用统一的API来对数据访问层进行操作;这主要是Spring Data
Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问
技术时都基于Spring提供的统一标准,标准包含了CRUD(创建、获取、更新、删除)、查询、
排序和分页的相关操作。
2、统一的Repository接口
Repository<T, ID extends Serializable>:统一接口
RevisionRepository<T, ID extends Serializable, N extends Number & Comparable<N>>:基于乐观
锁机制
CrudRepository<T, ID extends Serializable>:基本CRUD操作
PagingAndSortingRepository<T, ID extends Serializable>:基本CRUD及分页
3、提供数据访问模板类 xxxTemplate;
如:MongoTemplate、RedisTemplate等
4、JPA与Spring Data
1)、JpaRepository基本功能
编写接口继承JpaRepository既有crud及分页等基本功能
2)、定义符合规范的方法命名
在接口中只需要声明符合规范的方法,即拥有对应的功能
3)、@Query自定义查询,定制查询SQL
4)、Specifications查询(Spring Data JPA支持JPA2.0的Criteria查询)
mybatis,druid,jdbc的关系
druid和c3p0是一个级别的,都是数据源
mybatis是警察. druid是武器库(有很多枪). jdbc是武器商(他们造枪给武器库). 当你需要一次"除暴安良"时,你需要去找警察,警察从武器库拿枪干活. 以往的开发,是你使用jdbc直接造枪,然后自己干活.
jpa介绍
以前我们的应用程序直接使用ORM框架,如hibernate,mybatis。但是不同的框架使用方法不一样,而JPA让我们以同样的方式访问不同的ORM框架。常用的框架是hibernate。
JPA是一个规范,不是框架
hibernate是JPA的实现
创建新的项目:
创建项目时候选中SQL中的JPA,MySql,JDBC
打包方式war包
选中web
1)主配置文件导入jpa
spring: datasource: url: jdbc:mysql:///bookstore?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: root password: 111 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: # 更新或者创建数据表结构 ddl-auto: update # 控制台显示SQL show-sql: true
2)、整合SpringData JPA
JPA:ORM(Object Relational Mapping);
1)、编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;
//使用JPA注解配置映射关系 @Entity //告诉JPA这是一个实体类(和数据表映射的类) @Table(name = "tbl_user") //@Table来指定和哪个数据表对应;如果省略默认表名就是user; public class User { @Id //这是一个主键 @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键 private Integer id; @Column(name = "last_name",length = 50) //这是和数据表对应的一个列 //列名-字符长度 private String lastName; @Column //省略默认列名就是属性名 private String email;
2)、编写一个Dao接口来操作实体类对应的数据表(Repository)
//继承JpaRepository来完成对数据库的操作 public interface UserRepository extends JpaRepository<User,Integer> {//要操作的实体类-操作实体类主键类型 }
3)、基本的配置JpaProperties
在主配置文件中配置
spring: datasource: url: jdbc:mysql:///jpa?useUnicode=true&characterEncoding=utf-8 username: root password: 111 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: # 更新或者创建数据表结构 ddl-auto: update # 控制台显示SQL show-sql: true
使用JPA
直接在controller方法中这样使用就行
@RestController public class UserController { @Autowired UserRepository userRepository; @GetMapping("/user/{id}") public User getUser(@PathVariable("id") Integer id){ User user = userRepository.findOne(id); return user; } @GetMapping("/user") public User insertUser(User user){ User save = userRepository.save(user); return save; } }
查询:
添加:
http://localhost:8080/user?lastName=zhangsan&email=aa
个人:
不用自己创建数据库,操作简单,不用自己写那么多sql语句,之后将学习一下jpa,毕竟一行代码就搞定了之前好多行代码就可以搞定的事情