前言:
在选择JPA和Mybatis的事情上第一步肯定是听老大的,老大没要求,就自己习惯用哪个就用哪个,功能都是一样的,最主要是自己用起来舒服。
非要选择的话,就比如开发一个小型项目,个人建议用JPA开发,若项目已经开发完,你只需要接手进行项目改造,而项目之前就是使用的ssm框架,当然这时候你想都不用想的去用mybatis喽
这里说说使用时需要注意的点
1、建表时用sql或者可视化工具建表,不用JPA建表(JPA建表不直观,很多字段都是默认的varchar255)
2、表与表之间的级联关系尽量手动(通过程序中的逻辑来控制),不用@oneToMany和@ManyToMany(这两个方法建出的级联关系在后期需要扩展分库分表时难度较大)
总而言之,JPA和Mybatis是都需要会用的,两者都是实现的方法,没有谁优谁差,多懂一点东西总归是好的
废话不多说,开始干
第一步 附上maven配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
第二步 yml的一个配置
spring:
jpa:
hibernate:
ddl-auto: update
show-sql: true
第三步 咱们创建一个调用JPA的一个接口和一个getset,这个接口必须继承JpaRepository
public interface PayRecordRepository extends JpaRepository<User,Integer> {
}
@Entity //对实体注释。
public class User {
private int id;
private String name;
private int status;
@Id//唯一标识的主键,一定要加上
@GeneratedValue(strategy= GenerationType.AUTO)//主键由程序控制, 是默认选项 ,不设置就是这个
public int getId() {
return id;
}
}
第四步 新建一个controller咱们测试下查询效果
@MyLog("JPA")
@RequestMapping(value = "getjpa")
public Map<String, Object> getjpa() {
Map<String, Object> map = new HashMap<>();
PageHelper.startPage(1,1);
List<User>users =payRecordRepository.findAll();
PageInfo userPageInfo=new PageInfo(users);
map.put("list",userPageInfo);
return map;
}
查询成功。如果又什么不懂可以加q 867272378.看完的兄弟希望点个赞。谢谢
最后贴出Respository具有的基本方法,刚才我用的是finall,个人感觉如果要做复杂多表查询的话,还是建议用mybatis,我这个项目集成了mybatis和Jpa,Jpa主要是做单表时候感觉比较方便才用的,当然这也看个人习惯了。话不多说开始写bug吧。
@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
List<T> findAll();
List<T> findAll(Sort var1);
List<T> findAllById(Iterable<ID> var1);
<S extends T> List<S> saveAll(Iterable<S> var1);
void flush();
<S extends T> S saveAndFlush(S var1);
void deleteInBatch(Iterable<T> var1);
void deleteAllInBatch();
T getOne(ID var1);
<S extends T> List<S> findAll(Example<S> var1);
<S extends T> List<S> findAll(Example<S> var1, Sort var2);
}