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

时间: 12-31

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片段

<?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

在MyEclipse中编辑和执行SQL

数据库资源管理器工具包括了一个智能的SQL编辑器.在SQL编辑器中可以打开一个数据库连接,使其可以执行SQL语句并自动完成SQL相关片段的执行.在本教程中,你将学习到: 启动和使用SQL代码完成功能 执行SQL语句 生成SQL查询和表创建的脚本 更改SQL命令分隔符 持续时间:10分钟 没有MyEclipse?立即下载 1. 启用SQL代码完成功能 SQL代码完成功能要求预装编辑器相关数据库的元数据.在默认的情况下,SQL代码完成功能是被禁用的,这是为了避免严重的性能问题,因为此功能可能导致在非

笔记:MyBatis 动态SQL

有时候,静态的SQL语句并不能满足应用程序的需求.我们可以根据一些条件,来动态地构建SQL语句.例如,在Web应用程序中,有可能有一些搜索界面,需要输入一个或多个选项,然后根据这些已选择的条件去执行检索操作.在实现这种类型的搜索功能,我们可能需要根据这些条件来构建动态的SQL语句.如果用户提供了任何输入条件,我们需要将那个条件 添加到SQL语句的WHERE子句中. MyBatis通过使用<if>,<choose>,<where>,<foreach>,<

mybatis入门-动态sql

什么是动态sql 判断的动态sql mybatis核心就是对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 现有需求如下:需要查询用户,输入的是用户类,如果用户的性别类不为空,则将性别作为查询条件之一,如果用户的姓名不为空,则将用户姓名作为查询条件之一.如果用户两个属性都为空,则查询所有用户. 我们知道,在mapper中,我们的传入参数只有一个,多个参数只能通过包转类来实现,现在这种问题怎么解决呢?答案就是在xml文件中加入判断,使sql语句动态生成.刚才的需求所对应的

mybatis &lt;where&gt;、&lt;set&gt;、&lt;trim&gt;、&lt;sql&gt;、&lt;foreach&gt;标签的使用

mybatis where标签的使用 where后面跟查询条件 简化sql语句中判断条件的书写 例: <select id="user" parameterType="user" resultType="User"> select * from user <where> <if test="id!=null and id!=''"> id=#{id} </if> <if t

mybatis 详解(五)------动态SQL

前面几篇博客我们通过实例讲解了用mybatis对一张表进行的CRUD操作,但是我们发现写的 SQL 语句都比较简单,如果有比较复杂的业务,我们需要写复杂的 SQL 语句,往往需要拼接,而拼接 SQL ,稍微不注意,由于引号,空格等缺失可能都会导致错误. 那么怎么去解决这个问题呢?这就是本篇所讲的使用 mybatis 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQL

mybatis的动态sql编写以及一对一关系查询和一对多的查询

创建mybatis数据库,运行以下sql语句 /* SQLyog Ultimate v8.32 MySQL - 5.5.27 : Database - mybatis ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @[email protected]@UNIQU

mybatis系列-08-动态sql

8.1     什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 8.2     需求 用户信息综合查询列表和用户信息查询列表总数这两个statement的定义使用动态sql. 对查询条件进行判断,如果输入参数不为空才进行查询条件拼接. 8.3     mapper.xml <!-- 动态sql --> <select id="findUserListDynamic" parameterType=&quo