Mybatis常用标签记录

基础标签

select 标签

<select id="selectById" parameterType="String" resultType="User">
    select * from Userwhere id=#{id}
</select>

insert 标签

<insert id="insert" parameterType="Object">
    insert into student
    <trim prefix="(" suffix=")" suffixOverrides=",">
        <if test="name != null"> NAME, </if>
    </trim>
    <trim prefix="values(" suffix=")" suffixOverrides=",">
        <if test="name != null"> #{name}, </if>
     </trim>
</insert>

delete 标签

<delete id="deleteByPrimaryKey" parameterType="Object">
    delete from student where id=#{id}
</delete>

update 标签

<update id="insert" parameterType="Object">
    update student set name = #{name}
    where id = #{id}
</update>

resultMap 标签

字段表名映射

<resultMap id="BaseResultMap" type="com.online.charge.platform.student.model.Student">
    <id property="id" column="id" />
    <result column="NAME" property="name" />
    <result column="HOBBY" property="hobby" />
    <result column="MAJOR" property="major" />
    <result column="BIRTHDAY" property="birthday" />
    <result column="AGE" property="age" />
</resultMap>

sql 标签

<sql id="Base_Column_List">
    ID,MAJOR,BIRTHDAY,AGE,NAME,HOBBY
</sql>

include 标签

<select id="selectAll" resultMap="BaseResultMap">
    SELECT
    <include refid="Base_Column_List" />
    FROM student
    <include refid="Example_Where_Clause" />
</select>

动态标签

if 标签

<if test="name != null and name != ''">
    and NAME = #{name}
</if>

foreach 标签

  • collection:属性分别是 list、array、map三种,分别对应的List、数组、map 集合。
  • item :表示在迭代过程中每一个元素的别名
  • index :表示迭代的位置(下标)
  • open :前缀
  • close :后缀
  • separator :分隔符,表示迭代时每个元素之间以什么分隔
<select id="selectIn" resultMap="BaseResultMap">
    select name,hobby from student where id in
    <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

choose 标签

<select id="getStudentListChoose" parameterType="Student" resultMap="BaseResultMap">
    SELECT * from STUDENT WHERE 1=1
    <where>
        <choose>
            <when test="Name!=null and student!='' ">
                AND name LIKE CONCAT(CONCAT('%', #{student}),'%')
            </when>
            <when test="hobby!= null and hobby!= '' ">
                AND hobby = #{hobby}
            </when>
            <otherwise>
                AND AGE = 15
            </otherwise>
        </choose>
    </where>
</select>

where 标签

<select id="getStudentListWhere" parameterType="Object" resultMap="BaseResultMap">
    SELECT * from STUDENT
    <where>
        <if test="name!=null and name!='' ">
            NAME LIKE CONCAT(CONCAT('%', #{name}),'%')
        </if>
        <if test="hobby!= null and hobby!= '' ">
            AND hobby = #{hobby}
        </if>
    </where>
</select>

set 标签

<update id="updateStudent" parameterType="Object">
    UPDATE STUDENT
    <set>
        <if test="name!=null and name!='' ">
            NAME = #{name},
        </if>
        <if test="hobby!=null and hobby!='' ">
            MAJOR = #{major},
        </if>
        <if test="hobby!=null and hobby!='' ">
            HOBBY = #{hobby}
        </if>
    </set>
    WHERE ID = #{id};
</update>

trim 标签

参考博客:https://blog.csdn.net/qq_39623058/article/details/88779301

<select id="selectByNameOrHobby" resultMap="BaseResultMap">
	select * from student 
	<trim prefix="WHERE" prefixOverrides="AND | OR">
		<if test="name != null and name.length()>0"> 
			AND name=#{name}
		</if>
		<if test="hobby != null and hobby.length()>0">
			AND hobby=#{hobby}
		</if>
	</trim>
</select>

association 标签

方式一:一对一嵌套结果集映射

   <resultMap type="PersonResult" id="PersonMap">
        <id property="id" column="id" />
        <result property="name" column="name" />
        <!-- 一对一关联 -->
        <association property="idCard" column="idcard_id" javaType="IdCard">
            <id column="cid" property="id" />
            <result column="number" property="number" />
            <result column="expired_time" property="expiredTime" />
        </association>
    </resultMap>
    <select id="selectById" parameterType="Integer"
        resultMap="PersonMap">
        select p.id id, p.name name,c.id cid,c.number
        number,c.expired_time expired_time from t_person p
        inner join t_idcard
        c on p.idcard_id=c.id and p.id=#{id}
    </select>

方式二:一对一或者一对多嵌套查询

   <resultMap type="PersonResult" id="PersonMap">
        <id property="id" column="id" />
        <result property="name" column="name" />

        <!-- 一对一或者一对多关联,设置延迟加载方式 -->
        <association property="idCard" column="idcard_id"
            javaType="IdCard"
            select="com.sunwii.mybatis.mapper.IdCardMapper.selectById" fetchType="lazy"/>
    </resultMap>
    <select id="selectById" parameterType="Integer"
        resultMap="PersonMap">
        select id, name, idcard_id from t_person p where p.id=#{id}
    </select>

collection 标签

方式一:嵌套查询

  • select: 对应ml中的代码片段的id,
  • column: 作为select语句的参数传入,如果只传一个参数id可以简写: column=“id”
<resultMap id="BaseResultMap" type="com.xxx.modules.xxx.entity.Question" >
		<id column="id" 		 property="id"      jdbcType="VARCHAR" />
		<result column="content" property="content" jdbcType="VARCHAR" />
		<result column="type"    property="type"    jdbcType="VARCHAR" />
		<result column="sort"    property="sort"    jdbcType="INTEGER" />
		<collection property="options" javaType="java.util.ArrayList" ofType="User"
					select="selectList" column="{qid=id,sort=sort}" />
	</resultMap>

	<!-- 查询列表 -->
	<select id="selectList" resultMap="BaseResultMap">
        SELECT
        	pq.id, pq.content, pq.type, pq.sort
        FROM
        	question AS pq
    </select>

方式二:嵌套结果

<mapper namespace="com.xxx.modules.xxx.mapper.QuestionMapper">

<resultMap id="BaseResultMap" type="com.xxx.modules.xxx.entity.Question" >
		<id column="id" 		 property="id"      jdbcType="VARCHAR" />
		<result column="content" property="content" jdbcType="VARCHAR" />
		<result column="type"    property="type"    jdbcType="VARCHAR" />
		<result column="sort"    property="sort"    jdbcType="INTEGER" />
		<collection property="options" javaType="java.util.ArrayList" ofType="com.xxx.modules.data.entity.QuestionOption">
			<id column="o_id" property="id" jdbcType="VARCHAR" />
			<result column="o_content" property="content" jdbcType="VARCHAR" />
			<result column="o_sort" property="sort" jdbcType="INTEGER" />
		</collection>
		<!-- 列的别名 o_id,o_content,o_sort , 起别名是因为主子表都有这几个字段
			 这里要写 ofType, javaType还是可以不写 -->
	</resultMap>

	<!-- 查询列表 -->
	<select id="selectList" resultMap="BaseResultMap">
        SELECT
        	pq.id, pq.content, pq.type, pq.sort
        	,pqo.id AS oid ,pqo.content AS ocontent ,pqo.sort AS osort <!-- 联查子表字段,起别名 -->
        FROM
        	question AS pq
        	LEFT JOIN question_option pqo ON pq.id = pqo.qid <!-- 联查子表 -->
        <where>  
        </where>
    </select>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值