Mybatis 提取公共SQL语句标签

一、sql:sql和include配合使用

       这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化。

1、定义可重用的 SQL代码段

	<sql id="all_column">id,username,pazzword,state,reg_date</sql>
	
	<select id="getUser" resultType="cn.jq.mybatis.model.User">
		select 
			<include refid="all_column"></include> 
		from t_user where id = #{id}
	</select>

----
select id,username,pazzword,state,reg_date from t_user where id = ? 

2、通过 property子标签给sql标签里传值,通过 ${} 获取值

     1)比如:给查询表起个别名

	<sql id="all_column">${alias}.id,${alias}.username,${alias}.pazzword,${alias}.state,${alias}.reg_date</sql>
	
	<select id="getUser" resultType="cn.jq.mybatis.model.User">
		select 
			<include refid="all_column">
				<property name="alias" value="t1"/>
			</include> 
		from t_user t1 where t1.id = #{id}
	</select>

----
select t1.id,t1.username,t1.pazzword,t1.state,t1.reg_date from t_user t1 where t1.id = ? 

    2)提取可重用的查询条件

	<sql id="condition_sql">
		<if test="username != null and username != ''">
			and username like concat('%',concat(#{username},'%')) 
		</if>
		<if test="state != null and state >= 0">
			and state like #{state}
		</if>
	</sql>
	
	<select id="getUserBylike" resultType="cn.jq.mybatis.model.User">
		select * from t_user 
		<where>
			<include refid="condition_sql"></include>
		</where>
	</select>

List<User> userList = userMapper.getUserBylike("a",1);

注意:

    1)sql和include配合使用,sql标签里和其他增删改查标签一样支持动态slq标签

    2)include标签可以通过property子标签给sql标签里传值,sql标签里用 ${} 获取

二、bind标签(了解)

      bind元素可以从 OGNL表达式中创建一个变量并将其绑定到上下文

      比如:模糊查询 传参,使用bind元素 拼接 % 号, 注意:不能传 null值

	<select id="getUserBylike" resultType="cn.jq.mybatis.model.User">
		<bind name="new_username" value="'%'+username+'%'"/>
		select * from t_user where
		<choose>
			<when test="username != null and username != ''">
				username like #{new_username}
			</when>
			<when test="state != null and state >= 0">
				state like #{state}
			</when>
			<otherwise>
				1=1
			</otherwise>
		</choose>
	</select>

   

 

ends~

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Mybatis中的<include>标签用于在SQL映射文件中引用其他的SQL片段. 可以让我们把常用的SQL片段抽取出来,避免重复编写。使用方式如下: 在映射文件中定义SQL片段: ``` <sql id="columns">id, name, age</sql> ``` 在其他SQL中使用: ``` <select id="selectAll" resultType="com.example.MyClass"> SELECT <include refid="columns"/> FROM my_table </select> ``` 标签属性refid对应的值是定义SQL片段时使用的id, 上面的例子中columns为 refid值. ### 回答2: MyBatis中的<include>标签可以在XML映射文件中实现代码重用和片段复用。通过该标签,可以将一个或多个相同的SQL片段提取出来,然后在不同的地方进行引用,从而减少代码的冗余和重复编写。 <include>标签的使用主要包括以下几个步骤: 1. 首先,需要将要重用的SQL片段抽取出来,可以将其定义在XML映射文件中的任何位置。 2. 在需要引用该SQL片段的位置,使用<include>标签进行引用。语法格式为:<include refid="sql片段的id"/>。其中,refid属性用于指定被引用的SQL片段的id。 3. 引用的SQL片段可以定义在同一个XML映射文件中,也可以定义在其他XML映射文件中。如果在其他XML文件中定义了SQL片段,则需要在引用的地方使用命名空间进行引用。例如:<include refid="命名空间.sql片段的id"/>。 4. <include>标签还可以与<where>标签等结合使用,实现动态的SQL拼接,使SQL语句更加灵活和可读。 总的来说,<include>标签MyBatis中一个非常有用的标签,它能够提高代码的复用性和可读性,减少代码的冗余。通过将常用的SQL片段抽取出来,可以让SQL语句更加清晰和简洁。同时,<include>标签还可以与其他标签结合使用,实现更加灵活和动态的SQL拼接。 ### 回答3: MyBatis是一种开源的持久化框架,可以简化Java应用程序与关系型数据库之间的交互。在MyBatis中,<include>标签用于重用SQL语句片段。 <include>标签可以将已经定义好的SQL片段(即SQL语句的一部分)包含在其他SQL语句中,以达到复用的目的。这在需要多次使用相同的SQL语句片段时非常有用,可以减少代码冗余和维护成本。 使用<include>标签的步骤如下: 1. 定义SQL语句片段:在MyBatis的mapper文件中,可以使用<sql>标签或者<include>标签定义SQL语句的片段,例如: ```xml <sql id="selectFields"> id, name, age </sql> ``` 2. 在其他SQL语句中引用SQL片段:使用<include>标签,将已经定义好的SQL片段引用到其他SQL语句中,例如: ```xml <select id="getUser" resultType="User"> SELECT <include refid="selectFields"/> FROM user WHERE id = #{id} </select> ``` 在这个例子中,<include>标签用于引用了之前定义好的SQL片段"selectFields",从而实现了<include>标签的复用效果。 总结来说,<include>标签可以在MyBatis中实现SQL语句片段的复用,提高了代码的可维护性和重用性。它可以结合其他标签一起使用,如<sql>标签来定义SQL片段,从而进一步提高SQL语句的可读性和简洁性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值