config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false"/>
<!--延迟加载 解决N+1次数据库查询问题-->
<settingname="lazyLoadingEnabled"value="true"/>
<settingname="aggressiveLazyLoading"value="false"/>
</settings>
<typeAliases>
<typeAlias type="com.aiso.ijee.system.domain.SysCodeTable" alias="SysCodeTable"/>
<typeAlias type="com.aiso.ijee.system.domain.SysCodeTableValue" alias="SysCodeTableValue"/>
<typeAlias type="com.aiso.ijee.system.domain.SysOrg" alias="SysOrg"/>
<typeAlias type="com.aiso.ijee.system.domain.SysUser" alias="SysUser"/>
<typeAlias type="com.aiso.ijee.system.domain.SysRole" alias="SysRole"/>
<typeAlias type="com.aiso.ijee.system.domain.SysResource" alias="SysResource"/>
</typeAliases>
<!-- name是数据库厂商名,value是你自己的标识名 支持多种数据库 -->
<databaseIdProvider type="DB_VENDOR">
<property name="SQL" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle"/>
<property name="Adaptive Server Enterprise" value="sybase"/>
<property name="MySQL" value="mysql"/>
</databaseIdProvider>
</configuration>
Mapper.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.aiso.ijee.system.dao.SysCodeTableDao">
<!-- 添加 -->
<!-- 使用uuid作为主键,mysql -->
<insert id="insertSysCodeTable" parameterType="SysCodeTable"
flushCache="true">
<![CDATA[
insert into sys_code_table (id,code,name,type,sort_no,remark)
values (
#{id,jdbcType=VARCHAR},
#{code,jdbcType=VARCHAR},
#{name,jdbcType=VARCHAR},
#{type,jdbcType=DECIMAL},
#{sortNo,jdbcType=DECIMAL},
#{remark,jdbcType=VARCHAR})
]]>
</insert>
<!-- 查询 -->
<select id="selectAllCodeTablesCache" resultMap="codeTableResultMap"
flushCache="true">
SELECT
ct.*,
ctv.id v_id,
ctv.name v_name,
ctv.value v_value,
ctv.sort_no v_sort_no,
ctv.remark v_remark
FROM
sys_code_table ct
LEFT JOIN sys_code_table_value ctv
ON ct.id = ctv.code_table_id
ORDER BY ct.type,
ct.sort_no,
v_value,
v_sort_no,
v_name
</select>
<select id="selectSysCodeTableById" parameterType="String"
resultMap="codeTableResultMap" flushCache="true">
SELECT
ct.*,
ctv.id v_id,
ctv.name v_name,
ctv.value v_value,
ctv.sort_no v_sort_no,
ctv.remark v_remark
FROM
sys_code_table ct
LEFT JOIN sys_code_table_value ctv
ON ct.id = ctv.code_table_id
where ct.id = #{id}
ORDER BY ct.type,
ct.sort_no,
v_value,
v_sort_no,
v_name
</select>
<resultMap id="codeTableResultMap" type="SysCodeTable">
<id property="id" column="id" />
<result property="code" column="code" />
<result property="name" column="name" />
<result property="type" column="type" />
<result property="sortNo" column="sort_no" />
<result property="remark" column="remark" />
<collection property="sysCodeTableValues" ofType="SysCodeTableValue">
<id property="id" column="v_id" />
<result property="name" column="v_name" />
<result property="value" column="v_value" />
<result property="sortNo" column="v_sort_no" />
<result property="remark" column="v_remark" />
</collection>
</resultMap>
<!-- 修改 -->
<update id="updateSysCodeTable" parameterType="SysCodeTable"
flushCache="true">
update sys_code_table
set
name=#{name}, code=#{code},type=#{type},
sort_no=#{sortNo},remark=#{remark}
where id=#{id}
</update>
<!-- 删除子表 -->
<delete id="deleteSysCodeTableValueByCVId" parameterType="String"
flushCache="true">
delete from
sys_code_table_value
where code_table_id = #{id}
</delete>
<!-- 删除主表 -->
<delete id="deleteSysCodeTableById" parameterType="String"
flushCache="true">
delete from
sys_code_table
where id = #{id}
</delete>
</mapper>
<?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.aiso.ijee.system.dao.SysResourceDao">
<!-- 添加 -->
<!-- 使用uuid作为主键,mysql -->
<insert id="insertResource" parameterType="SysResource"
flushCache="true">
<![CDATA[
insert into sys_resource (id,parent_id,r_name, r_code,type,
url,level_num,level_code,icon_CSS,icon_url,sort_no,remark)
values (
#{id,jdbcType=VARCHAR},
#{parent.id,jdbcType=VARCHAR},
#{rName,jdbcType=VARCHAR},
#{rCode,jdbcType=VARCHAR},
#{type,jdbcType=DECIMAL},
#{url,jdbcType=VARCHAR},
#{levelNum,jdbcType=DECIMAL},
#{levelCode,jdbcType=VARCHAR},
#{iconCSS,jdbcType=VARCHAR},
#{iconUrl,jdbcType=VARCHAR},
#{click,jdbcType=VARCHAR},
#{sortNo,jdbcType=DECIMAL},
#{remark,jdbcType=VARCHAR}),
#{permission,jdbcType=VARCHAR})
]]>
</insert>
<!-- 删除 -->
<delete id="deleteResource" parameterType="String" flushCache="true">
delete from
sys_resource
where id = #{id}
</delete>
<!-- 修改 -->
<update id="updateResource" parameterType="SysResource"
flushCache="true">
update sys_resource
set
r_name=#{rName}, r_code=#{rCode},type=#{type},
url=#{url},level_num=#{levelNum},level_code=#{levelCode},icon_css=#{iconCss},icon_url=#{iconUrl},click=#{click},sort_no=#{sortNo},remark=#{remark},
permission=#{permission}
where id=#{id}
</update>
<!-- 查询 -->
<select id="selectAllResources" resultMap="resourcesResultMap"
flushCache="true">
select * from
sys_resource order by sort_no
</select>
<select id="selectResourceById" parameterType="String"
resultMap="resourcesResultMap" flushCache="true">
select * from sys_resource
where id = #{id}
</select>
<select id="selectParent" parameterType="String" resultMap="resourcesResultMap2">
select * from sys_resource where id=#{parent.id}
</select>
<select id="selectChildrenResources" parameterType="String"
resultMap="resourcesResultMap2" flushCache="true">
select * from sys_resource
where parent_id = #{id}
</select>
<resultMap id="resourcesResultMap" type="SysResource">
<id property="id" column="id" />
<result property="rName" column="r_name" />
<result property="rCode" column="r_code" />
<result property="type" column="type" />
<result property="url" column="url" />
<result property="iconUrl" column="icon_url" />
<result property="iconCss" column="icon_css" />
<result property="click" column="click" />
<result property="levelNum" column="level_num" />
<result property="levelCode" column="level_code" />
<result property="sortNo" column="sort_no" />
<result property="remark" column="remark" />
<result property="permission" column="permission" />
<!-- 查询父模块 -->
<association property="parent" column="parent_id" select="selectParent" />
<!-- 查询子模块 -->
<collection property="children" column="id" ofType="SysResource"
javaType="java.util.ArrayList" select="selectChildrenResources" />
</resultMap>
<resultMap id="resourcesResultMap2" type="SysResource">
<id property="id" column="id" />
<result property="rName" column="r_name" />
<result property="rCode" column="r_code" />
<result property="type" column="type" />
<result property="url" column="url" />
<result property="iconUrl" column="icon_url" />
<result property="iconCss" column="icon_css" />
<result property="click" column="click" />
<result property="levelNum" column="level_num" />
<result property="levelCode" column="level_code" />
<result property="sortNo" column="sort_no" />
<result property="remark" column="remark" />
<result property="permission" column="permission" />
</resultMap>
<select id="selectChildrenByType" resultMap="resourcesResultMap2"
flushCache="true">
select * from sys_resource
where parent_id = #{menuId} and
type = #{type } order by sort_no
</select>
</mapper>
application.xml
<!-- 扫描basePackage接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 映射器接口文件的包路径, -->
<property name="basePackage" value="com.aiso.ijee.*.dao" />
</bean>
<!-- MyBatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- mybatis配置文件路径 -->
<property name="configLocation" value="classpath:/mybatis/config.xml" />
<!-- 显式指定Mapper文件位置 -->
<property name="mapperLocations" value="classpath*:/mybatis/*Mapper.xml" />
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
<!-- 这个执行器会批量执行更新语句, 还有SIMPLE 和 REUSE -->
<constructor-arg index="1" value="BATCH" />
</bean>