版权声明:本篇文章由IT_CREATE整理 https://blog.csdn.net/IT_CREATE/article/details/88117298
对于项目而言,上面我们已经说了springboot+springmvc+springdata jpa+mybatis+freemarker+druid项目配置
https://blog.csdn.net/IT_CREATE/article/details/88110586
一、如何使用mybatis和springdata jpa呢,包结构有一点要求,
比如:权限管理模块,权限管理模块下面有权限管理和角色管理
在dao中,我们写spring data jpa的接口,在业务层我们要使用spring data jpa 就调取dao里面的接口
在mapper中,我们写mybatis的映射接口,在业务层我们要使用mybatis就调取 mapper里面的接口
二、展开后的包结构:
2.1 IAuthoritysysDao.java是使用spring data jpa的,所以,它的接口要继承JpaRepository和JpaSpecificationExecutor
public interface IAuthoritysysDao extends JpaRepository<PermissionsBean, Long>,JpaSpecificationExecutor<PermissionsBean>{
@Query("select p from PermissionsBean p where p.removeTag = ?1")
List<PermissionsBean> findByRemoveTag(byte removeTag);
@Modifying
@Query(value="update PermissionsBean pb set pb.removeTag = 0 where pb.id in (:ids) ")
int deleteByIds(@Param("ids")List<Long> ids);
@Query("select p from PermissionsBean p where p.type = ?1")
PermissionsBean findByType(long Type);
@Query("select p from PermissionsBean p where p.pId = ?1")
List<PermissionsBean> findByPid(long PId);
}
2.2 AuthoritysysMapper.java是使用mybatis的,所以在这个接口中写mybatis的方法
因为上一篇文章,我在application.properties文件配置了
#mybatis configure
mybatis.type-aliases-package=com.ge.telecom.bean
mybatis.mapper-locations=classpath:mybatis/mapper/*mag/*sys/*Mapper.xml
mybatis.type-aliases-package扫描的是实体类的包,也就是用于装数据的JavaBean的包
mybatis.mapper-locations扫描的是mybatis映射文件所在位置
mybatis的写法和我们平时的写法一样,比如:
public interface AuthoritysysMapper {
@Select("select id,menu_name as menuName from t_permissions")
@ResultType(PermissionsBean.class)
void addPermissionsBean(@Param("p") long id);
}
可以用注解,也可以写xml的配置,比如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ge.telecom.authoritymag.authoritysys.mapper.AuthoritysysMapper">
<!--方法映射写在这里-->
</mapper>
三、在业务层的实现类中去调用这两个接口,用到哪个调用哪个接口,比如:
@Service
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public class AuthoritysysServiceImpl implements IAuthoritysysService {
/**
* 引入权限管理持久层接口,springdata jpa接口
*/
@Resource
private IAuthoritysysDao authoritysysDaoImpl;
/**
* 引入权限管理mapper映射接口,mybatis 接口
*/
@Resource
private AuthoritysysMapper authoritysysMapper;
@Override
public List<PermissionsBean> findByRemoveTag(byte removeTag) {
// TODO Auto-generated method stub
return authoritysysDaoImpl.findByRemoveTag(removeTag);
}
@Override
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@MyLog(value = "权限管理", type = LogEnum.DELETE)
public int deleteByIds(List<Long> ids) {
// TODO Auto-generated method stub
return authoritysysDaoImpl.deleteByIds(ids);
}
}
基本的要求也就是这样了。