MyBatis动态SQL与模糊查询
sqlxml
<?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="PersonCondition">
<!--<where>可以自动去掉后面的第一个and-->
<select id="selectPersonByCondition" parameterType="person" resultMap="BaseResultMap">
select * from person t
<where>
<if test="name != null">
name like '%${name}%'
</if>
<if test="gender != null">
and gender = #{gender}
</if>
<if test="birthday !=null">
<![CDATA[
and birthday > #{birthday}
]]>
</if>
</where>
</select>
<!--set标签-->
<update id="dynamicUpdate" parameterType="person">
update person t
<set>
t.person_id = #{personId},
<if test="name != null">
name =#{name},
</if>
<if test="gender != null">
gender = #{gender},
</if>
<if test="birthday !=null">
birthday = #{birthday}
</if>
</set>
</update>
<!--foreach标签
map.put("ids",Integer[])
foreach 遍历集合来组装sql
collection: map中集合的key
open:以某种字符开始
close: 以某种字符结束
item:集合中的元素
separator: 以某种字符分隔
index:当前遍历的索引号
-->
<select id="selectPersonByIn" parmameterType="map" resultMap="BaseResultMap">
select * from person where t.person_id in
<foreach collection="ids" open="(" close=")" item="pId" separator="," index="indx">
#{pId}
</foreach>
</select>
<!--mysql中可以实现批量插入输入,insert into person() values (1..),(2..)-->
<insert id="insertBatch" parameterType="map">
insert into person (name,gender,addr,birthday)
values
<foreach collection="pList" separator="," item="person">
(#{person.name},#{person.gender},#{person.addr},#{person.birthday})
</foreach>
</insert>
<!-- 实现多条件查询,姓名模糊匹配,年龄在最大最小值之间 -->
<select id="getPerson" parameterType="com.stone.bean.ConditionPerson"
resultType="com.stone.bean.Person">
select * from person where
<if test='name !="%null%"'>
name like #{name} and
</if>
age
between
#{minAge} and #{maxAge}
</select> </mapper>
condition java bean
package com.stone.bean; public class ConditionPerson {
private String name;
private int minAge;
private int maxAge;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMinAge() {
return minAge;
}
public void setMinAge(int minAge) {
this.minAge = minAge;
}
public int getMaxAge() {
return maxAge;
}
public void setMaxAge(int maxAge) {
this.maxAge = maxAge;
}
public ConditionPerson(String name, int minAge, int maxAge) {
super();
this.name = name;
this.minAge = minAge;
this.maxAge = maxAge;
}
public ConditionPerson() {
super();
}
@Override
public String toString() {
return "ConditionPerson [name=" + name + ", minAge=" + minAge
+ ", maxAge=" + maxAge + "]";
} }
java bean
package com.stone.bean; import java.text.SimpleDateFormat;
import java.util.Date; public class Person { private int id;
private String name;
private Date birthday;
private int age; public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} @Override
public String toString() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:SS");
return "Person [id=" + id + ", name=" + name + ", birthday="
+ dateFormat.format(birthday) + "]";
} }
test
package com.stone.dao; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.stone.bean.ConditionPerson;
import com.stone.bean.Person;
import com.stone.db.DBAccess; public class DBDaoPerson { public static void main(String[] args) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
String statement = "PersonCondition.getPerson";
ConditionPerson parameter = new ConditionPerson("%a%", 11, 18);
// 通过sqlSession执行SQL语句;
List<Person> list = sqlSession.selectList(statement, parameter);
System.out.println(list);
System.out.println("======================="); } catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
} }
MyBatis动态SQL与模糊查询的更多相关文章
- mybatis 动态Sql的模糊查询
where teacher.tname like concat(concat(#{tName}),'%') 2:distinct的使用 下面先来看看例子: table id name 1 ...
- mybatis的动态sql及模糊查询
1.动态sql 使用类似于jstl表达式来实现 2.模糊查找 用一个对象来封装条件 步骤: 1)新建一个条件实体 package com.hy.mybatis.entity; public class ...
- 动态SQL与模糊查询
一: 1.需求 实现多条件查询用户(姓名模糊查询,年龄在指定的最小值与最大值之间) 2.结构目录 3.准备数据与建表 CREATE TABLE d_user( id int PRIMARY KEY A ...
- 动态SQL之模糊查询
模糊查询学习了三种: DAO层 // 可以使用 List<User> wherelike01(String user_name); // 忘记 List<User> where ...
- 8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)
多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public ...
- Mybatis中动态SQL多条件查询
Mybatis中动态SQL多条件查询 mybatis中用于实现动态SQL的元素有: if:用if实现条件的选择,用于定义where的字句的条件. choose(when otherwise)相当于Ja ...
- 超全MyBatis动态SQL详解!( 看完SQL爽多了)
MyBatis 令人喜欢的一大特性就是动态 SQL. 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的. MyBatis 动态 SQL 的出现, 解决了这个麻烦. My ...
- MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
目录 0 一起来学习 mybatis 1 数据准备 2 if 标签 2.1 在 WHERE 条件中使用 if 标签 2.1.1 查询条件 2.1.2 动态 SQL 2.1.3 测试 2.2 在 UPD ...
- mybatis动态sql和分页
mybatis动态sql foreach BookMapper.xml <select id="selectBooksIn" resultType="com.lin ...
随机推荐
- Android提高第十二篇之蓝牙传感应用
请问淘宝上买的单片机蓝牙模块与安卓/android手机通讯的时候需要设置UUID吗? 2013-02-15 09:39 在世张辽 | 浏览 2769 次 想用安卓手机和单片机通过蓝牙模块通讯, ...
- ecos的app处理类
get 获取指定app的对象实例 参数 $app_name 返回指定app name的app类实例 app::get('desktop') render 获取base_render类的实例 base_ ...
- gnome3 no launcher
http://askubuntu.com/questions/43246/how-to-configure-gnome-3-to-show-icons-on-desktop http://superu ...
- php使用curl设置超时的重要性
原文:http://phpquan.com/lamp/php/php-curl-timeout/ 网站登录不了,原因是没有可用的 PHP 子进程来响应新的请求了.这可能是是由于PHP-curl 没有 ...
- SQL复习五(索引)
SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引 ...
- FreeRTOS初步认识
源:FreeRTOS初步认识 用了半天时间对FreeRTOS有了一个初步的认识,大概总结一下,其中混杂了系统实现和实际应用方面的问题. 现只是以应用为目的,实现方面待以后进一步研究. 1.FreeRT ...
- java中关于编码的问题(字符转换流及字符缓冲流 )
上次我们使用的是字节流,还有一种方式就是字符流,上次说过如何分辨使用哪种流,如果记事本可以读懂则使用字符流,否则使用字节流.使用字符流就需要牵扯到编码的问题,下面给出一种转化流的格式. OutputS ...
- Android之事件分发
网上总结的很详细了,有时间总结下做个笔记
- PHP 实现冒泡法排序
<?php $nums = array(10,0,20,30,50,40,80); function stor($numbers){ $length = count($numbers); for ...
- 为HTTP分类作序
作者:zccst 曾经,认为对HTTP已经非常熟悉了,觉得不需要学习什么,知道2014年春天,让我感觉到自己是如此的无知. 举例: 1,对HTTP头部信息知道多少?每一个字段分别都可以取哪些值,每一个 ...