二、配置了双持久层框架(springdata jpa+mybatis)后包结构及遵循的一些规范

版权声明:本篇文章由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);
	}
}

基本的要求也就是这样了。

猜你喜欢

转载自blog.csdn.net/IT_CREATE/article/details/88117298