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());