mybatis一對(duì)多兩種mapper寫法實(shí)例
mybatis一對(duì)多兩種mapper寫法
第一種
<resultMap type="com.example.demo.model.TuserModel" id="extendMapper"> <id column="id" property="id" /> <result column="user_name" property="userName" /> <result column="nick_name" property="nickName" /> <result column="avatar" property="avatar" /> <result column="email" property="email" /> <result column="signature" property="signature" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="del_flag" property="delFlag" /> <collection property="tpluginModels" ofType="com.example.demo.model.TpluginModel" column="id"> <id column="pid" property="id" /> <result column="user_id" property="userId" /> <result column="name" property="name" /> <result column="icon" property="icon" /> <result column="vsersion" property="vsersion" /> <result column="tags" property="tags" /> <result column="description" property="description" /> <result column="bcreate_time" property="createTime" /> <result column="bupdate_time" property="updateTime" /> <result column="del_flag" property="delFlag" /> </collection> </resultMap>
sql語句用聯(lián)表查詢
u.*,p.id
as
pid,p.user_id,p.name,p.icon,p.vsersion,p.tags,p.description,p.create_time
as bcreate_time,p.update_time as bupdate_time,p.del_flag from t_user u
LEFT
JOIN t_plugin p ON u.id=p.user_id and u.del_flag=0 and
p.del_flag=0 WHERE
u.user_name LIKE CONCAT('%',#{name},'%') OR
u.nick_name LIKE
CONCAT('%',#{name},'%')
第二種
<resultMap type="com.example.demo.model.TuserModel" id="extendMapper"> <id column="id" property="id" /> <result column="user_name" property="userName" /> <result column="nick_name" property="nickName" /> <result column="avatar" property="avatar" /> <result column="email" property="email" /> <result column="signature" property="signature" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="del_flag" property="delFlag" /> <collection property="tpluginModels" column="id" ofType="com.example.demo.model.TpluginModel" select="pluginByUid" /> //column='id' 為關(guān)聯(lián)查詢所需條件 </resultMap>
sql語句使用兩個(gè)sql語句返回結(jié)果
<select id="selectTuserBynameOrNick" resultMap="extendMapper"> SELECT
* FROM t_user WHERE del_flag = 0 AND ( user_name LIKE CONCAT( '%', #{name},'%')
OR nick_name LIKE CONCAT( '%', #{name},'%')) </select>
//下個(gè)sql語句依賴上個(gè)
<select id="pluginByUid" resultType="com.example.demo.model.TpluginModel"> SELECT id,user_id as
userId,name,icon,vsersion,tags,description,
create_time as createTime ,update_time as updateTime ,del_flag as delFlag
FROM t_plugin WHERE del_flag = 0 AND user_id = #{id}
</select>
補(bǔ)充知識(shí):Mybatis 一個(gè)dao 對(duì)應(yīng)多個(gè)Mapper.xml
由于項(xiàng)目中的mybatis的mapper是用mybatis generator自動(dòng)生成的,但是生成的mapper滿足不了我的業(yè)務(wù),需要自己擴(kuò)展,所以就研究了下、
添加接口
創(chuàng)建mapper.xml
修改配置
1.添加接口
在原dao中加個(gè)接口
/** ---------------自定義Mapper--------------- **/
List<PcacheCluster> select(ClusterInstanceBO clusterInstanceBO);
2. 創(chuàng)建mapper.xml
PcacheClusterMapperExtend.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.oppo.paas.pcache.manager.mapper.PcacheTemplateMapper">
<select id="select" parameterType="com.oppo.paas.pcache.manager.entity.PcacheTemplate" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_pcache_template
<where>
<if test="templateId != null and templateId != ''">
and template_id = #{templateId}
</if>
<if test="templateName != null and templateName != ''">
and template_name = #{templateName}
</if>
<if test="templateType != null and templateType != ''">
and template_type = #{templateType}
</if>
<if test="createUser != null and createUser != ''">
and create_user = #{createUser}
</if>
<if test="createTime != null ">
and create_time = #{createTime,jdbcType=TIMESTAMP}
</if>
</where>
order by create_time desc
</select>
</mapper>
3. 修改配置
項(xiàng)目目錄:

添加mapper掃描路徑
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 自動(dòng)掃描mapping.xml文件 -->
<property name="mapperLocations" >
<array>
<value>classpath:mybatis/mappers/*Mapper.xml</value>
<!-- 擴(kuò)展mapper.xml -->
<value>classpath:mybatis/mappers/extend/*MapperExtend.xml</value>
</array>
</property>
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<!-- 這里的幾個(gè)配置主要演示如何使用,如果不理解,一定要去掉下面的配置 -->
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
</value>
</property>
</bean>
</array>
</property>
</bean>
mybatis generator 已經(jīng)過時(shí)了哦,太麻煩,耦合性高,建議使用通用Mapper,完美繼承spring,springboot
學(xué)習(xí)地址:https://gitee.com/free/Mapper/wikis/Home
以上這篇mybatis一對(duì)多兩種mapper寫法實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring、SpringMVC和SpringBoot的區(qū)別及說明
這篇文章主要介紹了Spring、SpringMVC和SpringBoot的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-10-10
SpringBoot打印POST請(qǐng)求原始入?yún)ody體方式
這篇文章主要介紹了SpringBoot打印POST請(qǐng)求原始入?yún)ody體方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序詳解
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序,結(jié)合實(shí)例形式分析了java插入排序的概念、分類、原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-05-05
springboot實(shí)現(xiàn)瀏覽器截屏并添加文字
大家好,本篇文章主要講的是springboot實(shí)現(xiàn)瀏覽器截屏并添加文字,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02

