sql片段

1):定义sql片段
<!-- 定义sql片段 -->
<!--
id: sql片段的标识
经验:1:基于单表来定义sql片段,这样的话sql片段的可重用性才高
2:sql片段中不要包含<where>标记
-->
<sql id="where_statement">
<if test="_parameter!=null">
<if test="username!=null and username!=‘‘">
t.username like ‘%${username}%‘
</if>
<if test="sex!=null and sex!=‘‘">
and t.sex=#{sex}
</if>
</if>
</sql>

2):使用sql片段
<!-- 查询用户信息 -->
<select id="queryUser5" parameterType="org.pine.mybatis.util.UserQueryBean" resultType="org.pine.mybatis.po.User">
select t.id,t.username,t.birthday,t.sex,t.address
from user t
<where>
<!-- 使用sql片段 -->
<!-- <include refid="where_statement"/> -->
<!-- 注意:如果要使用其它映射文件(StaffMapper.xml)中定义的sql片段,需要加上其它映射文件(StaffMapper.xml)中的namespace -->
<include refid="org.pine.mybatis.mapper.StaffMapper.where_statement1"/>
</where>
</select>

3):进行测试
@Test
public void testQueryUser5(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
UserQueryBean userQueryBean = new UserQueryBean();
String username = "李";
String sex = "男";
userQueryBean.setUsername(username);
userQueryBean.setSex(sex);
List<User> users = userMapper.queryUser5(userQueryBean);
for (int i = 0; i < users.size(); i++) {
User user = users.get(i);
logger.info(i+"==>"+user);
}
sqlSession.close();
}

原文地址:https://www.cnblogs.com/thaipine/p/10202572.html

时间: 2024-11-09 10:08:50

sql片段的相关文章

ibatis复用SQL片段、引入片段 动态条件增加

1:ibatis复用SQL片段.引入片段  使用[sql]和[include]标签: 通常情况下,你会这样写:xml 代码 <select id="selectItemCount" resultClass="int"> SELECT COUNT(*) AS total FROM items WHERE parentid = 6 select> <select id="selectItems" resultClass=&qu

03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

 1 PersonTestMapper.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"> <!-- namespace:命名空间

mybatis动态SQL中的sql片段

在mybatis中通过使用SQL片段可以提高代码的重用性,如下情景: 1.创建动态SQL <sql id="sql_count">select count(*)</sql> 2.使用 <select id="selectListCountByParam" parameterType="map" resultType="String"> <include refid="sql_

sql片段的定义

<!-- sql片段 id 表示唯一标示 这里不加where是因为 sql片段只对单表查询才抽取出来 这样的重用性更高 --> <sql id="query_user_where"> <if test="userCustom!=null"> <if test="userCustom.username != null and userCustom.username !=''"> user.userna

6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)

动态Sql是Mybatis的核心,就是对我们的sql语句进行灵活的操作,他可以通过表达式,对sql语句进行判断,然后对其进行灵活的拼接和组装.可以简单的说成Mybatis中可以动态去的判断需不需要某些东西. 动态Sql主要有以下类型: if choose,when,otherwise trim,where,set foreach 这里主要介绍几个常见的where  if  foreach,直接贴代码了 1.where 这里的where有一个好处就是在拼接成功的时候,会自动去掉第一个and 2.i

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 简单概述一下本讲 别名,sql片段简单写一下,模糊查询多写一点 一.别名 <typeAliases> <!--第一种--> <!--<typeAlias type="cn.dawn.demo01.entity.Book" alias="book"></typeAlias>--> <!--第二种--> <

mybatis动态sql之利用sql标签抽取可重用的sql片段

<sql id="insertColumn"> last_name,gender,email </sql> <insert id=""> insert into tbl_employee( <include refid="insertColumn"> ) values(#{lastName},#{gender},#{email}) </insert> 即我们可以将重复使用的sql片段抽取

Mybatis动态sql和sql片段

<?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.alibaba.uyuni.dal.mappe

mybatis动态sql片段与分页,排序,传参的使用

<?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"> <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mappe