环境:oracle数据库,spring+mybatis
1.Maven依赖
pom.xml
<!-- https://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence -->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.1.0</version>
</dependency>
2.创建序列B_ROLE_ID_SEQ
3.实体
package com.jusfoun.socialgrid.admin.domain;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.itmuch.core.entity.BaseEntity;
@Table(name = "B_ROLE")
public class Role extends BaseEntity {
/**
* id
*/
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "select B_ROLE_ID_SEQ.nextval from dual")
private Long id;
/**
* 归属机构
*/
@Column(name = "OFFICE_ID")
private Long officeId;
/**
* 角色名称
*/
@Column(name = "NAME")
private String name;
/**
* 英文名称
*/
@Column(name = "ENNAME")
private String enname;
/**
* 角色类型
*/
@Column(name = "ROLE_TYPE")
private Short roleType;
/**
* 是否系统数据 0否 1是
*/
@Column(name = "SYS_FLAG")
private Short sysFlag;
/**
* 状态 0:可用 1:禁用
*/
@Column(name = "STATUS")
private Short status;
@Column(name = "PARENT_ID")
private Long parentId;
private static final long serialVersionUID = 1L;
/**
* 获取id
*
* @return ID - id
*/
@Override
public Long getId() {
return this.id;
}
/**
* 设置id
*
* @param id id
*/
@Override
public void setId(Long id) {
this.id = id;
}
/**
* 获取归属机构
*
* @return OFFICE_ID - 归属机构
*/
public Long getOfficeId() {
return this.officeId;
}
/**
* 设置归属机构
*
* @param officeId 归属机构
*/
public void setOfficeId(Long officeId) {
this.officeId = officeId;
}
/**
* 获取角色名称
*
* @return NAME - 角色名称
*/
public String getName() {
return this.name;
}
/**
* 设置角色名称
*
* @param name 角色名称
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取英文名称
*
* @return ENNAME - 英文名称
*/
public String getEnname() {
return this.enname;
}
/**
* 设置英文名称
*
* @param enname 英文名称
*/
public void setEnname(String enname) {
this.enname = enname;
}
/**
* 获取角色类型
*
* @return ROLE_TYPE - 角色类型
*/
public Short getRoleType() {
return this.roleType;
}
/**
* 设置角色类型
*
* @param roleType 角色类型
*/
public void setRoleType(Short roleType) {
this.roleType = roleType;
}
/**
* 获取是否系统数据 0否 1是
*
* @return SYS_FLAG - 是否系统数据 0否 1是
*/
public Short getSysFlag() {
return this.sysFlag;
}
/**
* 设置是否系统数据 0否 1是
*
* @param sysFlag 是否系统数据 0否 1是
*/
public void setSysFlag(Short sysFlag) {
this.sysFlag = sysFlag;
}
/**
* 获取状态 0:可用 1:禁用
*
* @return STATUS - 状态 0:可用 1:禁用
*/
public Short getStatus() {
return this.status;
}
/**
* 设置状态 0:可用 1:禁用
*
* @param status 状态 0:可用 1:禁用
*/
public void setStatus(Short status) {
this.status = status;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
}
<?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.jusfoun.socialgrid.admin.persistence.RoleMapper">
<resultMap id="BaseResultMap" type="com.jusfoun.socialgrid.admin.domain.Role">
<id column="ID" property="id" jdbcType="DECIMAL" />
<result column="OFFICE_ID" property="officeId" jdbcType="DECIMAL" />
<result column="NAME" property="name" jdbcType="VARCHAR" />
<result column="ENNAME" property="enname" jdbcType="VARCHAR" />
<result column="ROLE_TYPE" property="roleType" jdbcType="DECIMAL" />
<result column="SYS_FLAG" property="sysFlag" jdbcType="DECIMAL" />
<result column="STATUS" property="status" jdbcType="DECIMAL" />
<result column="PARENT_ID" property="parentId" jdbcType="DECIMAL" />
</resultMap>
<sql id="Base_Column_List">
ID, OFFICE_ID, NAME, ENNAME, ROLE_TYPE, SYS_FLAG, STATUS,PARENT_ID
</sql>
<insert id="insertRoleMenu">
insert into b_role_menu
(role_id, menu_id)
<foreach close=")" collection="menuIds" item="item" index="index" open="(" separator="union">
select
#{roleId},#{item}
from dual
</foreach>
</insert>
<delete id="deleteRoleMenuById" parameterType="java.lang.Long">
delete from b_role_menu
where role_id = #{roleId}
</delete>
<select id="selectCountAdminIdByRoleId" parameterType="java.lang.Long" resultType="java.lang.Long">
select count(1) from b_user_role
where role_id = #{roleId}
</select>
<select id="selectMenuIdsByRoleId" parameterType="java.lang.Long" resultType="java.lang.Long">
select menu_id from b_role_menu
where role_id = #{roleId}
</select>
<select id="selectMenuPermsByRoleId" parameterType="java.lang.Long" resultType="java.lang.String">
select t.permission from b_menu t,b_role_menu t2
where t2.role_id = #{roleId} and t.id=t2.menu_id
</select>
<select id="conditionPageQuery" resultMap="BaseResultMap" parameterType="com.jusfoun.socialgrid.admin.vo.RoleVo">
select
<include refid="Base_Column_List" />
from b_role u
where 1=1
<if test="name != null and name!=''">
<bind name="pattern_name" value="'%' + _parameter.getName() + '%'" />
AND u.name like #{pattern_name}
</if>
</select>
<select id="selectAllByCurruntUser" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from b_role start with ID=${department} connect by PRIOR id = parent_id
</select>
</mapper>