Mybatis和jpa的区别

1.

可能我这么说大家还是不太理解什么时候用jpa什么时候用mybatis。我举个例子:现在业务上A,B,C,D四个表。如果你每个表都会在业务中用到,都需要有单独的增删改查,虽然有一定的关联关系,但是这种情况用jpa就比较合适。ABCD四个java实体不说,每个实体要对应一个repository。然后再repository层进行crud的编写。但是如果业务上A,B,C,D四个表。这四个是关联关系,你几乎不会单独对A,B,C进行操作,而且展现出来的也是D,那么这个时候jpa的使用就会很麻烦,因为你还是要四个实体四个repository。在一个接口中四个repository挨个调用一次。虽然也能完成业务逻辑,但是复杂又麻烦。还要考虑原子性什么的。所以这个时候用mybatis比较合适了。

2.mybatisPlus相关注解:
(1)TableName

(2)TableId

(3)Mapper

(4)Tablelogic

3.jpa相关注解:

jpa首相需要一个repository继承JpaRepository

jpa如果需要自己写sql就在repository中使用@Modifying和@Query注解:

@Repository

public interface UserRepository extends JpaRepository<User,Integer>{

  @Modifying
  @Query("update User set name = :#{#user.name} where id=:#{#user.userId}")
  User update(@param("user") User user)  

}

(1)@Repository

(2)@Table

(3)@Id

4.queryDLS通用查询框架:

编译生成Quser

@Autowired
private JPAQueryFactory jpaQueryFactory;


QUser quser = QUser.user;
List<UserDTO> users = jpaQueryFactory.select(quser).from(quser)
                                     .offset(userDTO.getPage())
                                     .limit(userDTO.getRows())
                                     .fetch().stream().map(t->{
                                        return UserConvertUserDTO.convert(t)
                                
                                     }).collect(Collectors.toList());

猜你喜欢

转载自blog.csdn.net/kkkkkfffd/article/details/121486647