<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ***** # 6.1.3 鑒別器查詢 有時一個查詢會根據列的值不同返回不同的結果集。 **例子:** 角色的屬性enable值為1的時候表示狀態可用,為0的時候表示狀態不可用。enable=1時可以獲取到該角色下詳細的權限信息。 當enable=0時只能獲取角色的基息。 **1. 在SysRole.java中** ``` package tk.mybatis.simple.model; import java.io.Serializable; import java.util.Date; import java.util.List; import tk.mybatis.simple.type.Enabled; /** * 角色表 */ public class SysRole implements Serializable { private static final long serialVersionUID = 6320941908222932112L; /** * 角色ID */ private Long id; /** * 角色名 */ private String roleName; private int enabled; /** * 創建人 */ private String createBy; /** * 創建時間 */ private Date createTime; /** * 用戶信息 */ private SysUser user; /** * 角色包含的權限列表 */ List<SysPrivilege> privilegeList; } ``` **2 在RoleMapper.java中** ``` /** * 根據用戶 ID 獲取用戶的角色信息 * * @param userId * @return */ //xml中的sql用#{userId}從方法的入參取值 List<SysRole> selectRoleByUserIdChoose(Long userId); ``` **3. 在RoleMapper.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="tk.mybatis.simple.mapper.RoleMapper"> <cache/> <!-- 基礎映射 --> <resultMap id="roleMap" type="tk.mybatis.simple.model.SysRole"> <id property="id" column="id"/> <result property="roleName" column="role_name"/> <result property="enabled" column="enabled"/> <!-- <association property="createInfo" javaType="tk.mybatis.simple.model.CreateInfo"> --> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> </resultMap> <resultMap id="rolePrivilegeListMapSelect" extends="roleMap" type="tk.mybatis.simple.model.SysRole"> <collection property="privilegeList" fetchType="lazy" select="tk.mybatis.simple.mapper.PrivilegeMapper.selectPrivilegeByRoleId" column="{roleId=id}"/> </resultMap> <!--3 鑒別器查詢,根據返回的值不同,選擇不同的映射結果--> <resultMap id="rolePrivilegeListMapChoose" type="tk.mybatis.simple.model.SysRole"> <discriminator column="enabled" javaType="int"> <!-- 根據sql查詢出的enabled--> <case value="1" resultMap="rolePrivilegeListMapSelect"/> <case value="0" resultMap="roleMap"/> </discriminator> </resultMap> <!--3 鑒別器查詢,根據返回的值不同,選擇不同的映射結果--> <select id="selectRoleByUserIdChoose" resultMap="rolePrivilegeListMapChoose"> select r.id, r.role_name, r.enabled, r.create_by, r.create_time from sys_role r inner join sys_user_role ur on ur.role_id = r.id where ur.user_id = #{userId} </select> </mapper> ``` javaType: 該屬性用于指定列的類型, 保證使用相同的Java類型來比較值 **4 在RoleMapperTest.java中** ``` public class RoleMapperTest extends BaseMapperTest{ @Test public void testSelectRoleByUserIdChoose(){ //獲取 sqlSession SqlSession sqlSession = getSqlSession(); try { //獲取 RoleMapper 接口 RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class); //由于數據庫數據 enable 都是 1,所以我們給其中一個角色的 enable 賦值為 0 SysRole role = roleMapper.selectById(2L); role.setEnabled(0); roleMapper.updateById(role); //獲取用戶 1 的角色 List<SysRole> roleList = roleMapper.selectRoleByUserIdChoose(1L); for(SysRole r: roleList){ System.out.println("角色名:" + r.getRoleName()); if(r.getId().equals(1L)){ //第一個角色存在權限信息 Assert.assertNotNull(r.getPrivilegeList()); } else if(r.getId().equals(2L)){ //第二個角色的權限為 null Assert.assertNull(r.getPrivilegeList()); continue; } for(SysPrivilege privilege : r.getPrivilegeList()){ System.out.println("權限名:" + privilege.getPrivilegeName()); } System.out.println(); } } finally { sqlSession.rollback(); //不要忘記關閉 sqlSession sqlSession.close(); } } } ``` ![](https://box.kancloud.cn/f9fd82f14b6fe7e17d9bfe381d7351c0_504x668.png) ![](https://box.kancloud.cn/3c1e3c5f6f2e77d9422da53c8d6f7961_455x170.png) **5 鑒別器的其他使用方法** ![](https://box.kancloud.cn/51e836d4893cd11baa1978b6e4ac4f69_930x554.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看