------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

谈论到智能,有什么要想的没有?

我下面放张图

相信都见过这个吧,你在之前没有学习过框架的时候怎么写的,动态sql?还是。。。

智能标签可以解决类似问题

它可以在sql语句中随传入参数是否为null甚至其他来自行加where或者and,或者其他等等用法

他分为 where ,if ,choose ,foreach的array方式 ,foreach的list方式 ,foreach的list自定义类型方式

我一块放在下面,对照着看吧

实体类

public class Book {
private Integer bookID;
private String bookName;
private String bookAuthor;
private Integer bookPrice; public Book() {
} public Integer getBookID() {
return this.bookID;
} public void setBookID(Integer bookID) {
this.bookID = bookID;
} public String getBookName() {
return this.bookName;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public String getBookAuthor() {
return this.bookAuthor;
} public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
} public Integer getBookPrice() {
return this.bookPrice;
} public void setBookPrice(Integer bookPrice) {
this.bookPrice = bookPrice;
}
}

接口中的方法

//智能标签where if
public List<Book> findtrueBookByIf(String bookName,Integer bookPrice);
//智能标签where choose
public List<Book> findtrueBookByChoose(Integer bookPrice);
//智能标签where foreach array
public List<Book> findtrueBookByForeachArray(int [] array);
//智能标签where foreach list
public List<Book> findtrueBookByForeachList(List<Integer> list);
//智能标签where foreach list
public List<Book> findtrueBookByForeachListBook(List<Book> list);

小配置中

<!--智能标签,where if-->
<select id="findtrueBookByIf" resultType="Book">
select * from book
<where>
<if test="#{0}!=null">
AND bookName LIKE '%' #{} '%'
</if>
<if test="#{0}!=null">
AND bookPrice>#{}
</if>
</where>
</select>
<!--智能标签,where choose-->
<select id="findtrueBookByChoose" resultType="Book">
select * from book
<where>
<choose>
<when test="#{0}!=null">
AND bookPrice>#{}
</when>
<otherwise>=</otherwise>
</choose>
</where>
</select>
<!--智能标签,where foreach array-->
<select id="findtrueBookByForeachArray" resultType="Book">
select * from book
<where>
bookID IN
<foreach collection="array" open="(" close=")" separator="," item="myid">
#{myid}
</foreach>
</where>
</select>
<!--智能标签,where foreach list-->
<select id="findtrueBookByForeachList" resultType="Book">
select * from book
<where>
bookID IN
<foreach collection="list" open="(" close=")" separator="," item="myid">
#{myid}
</foreach>
</where>
</select>
<!--智能标签,where foreach list book-->
<select id="findtrueBookByForeachListBook" resultType="Book">
select * from book
<where>
bookID IN
<foreach collection="list" open="(" close=")" separator="," item="book">
#{book.bookID}
</foreach>
</where>
</select>

测试类中

///智能标签where + foreach list Book自定义list 进行多条件查询
@Test
public void t9selectZhiNengByForeachListBook(){
SqlSession session= MyBatisUtils.getSession(); IBookDAO mapper = session.getMapper(IBookDAO.class);
List<Book> list=new ArrayList<Book>();
Book b1=new Book();
b1.setBookID();
Book b2=new Book();
b2.setBookID();
list.add(b1);
list.add(b2);
List<Book> books = mapper.findtrueBookByForeachListBook(list);
for (Book items:books) {
System.out.println(items.getBookName());
} session.close(); } ///智能标签where + foreach list 进行多条件查询
@Test
public void t8selectZhiNengByForeachList(){
SqlSession session= MyBatisUtils.getSession(); IBookDAO mapper = session.getMapper(IBookDAO.class);
List<Integer> list=new ArrayList<Integer>();
list.add();
list.add();
List<Book> books = mapper.findtrueBookByForeachList(list);
for (Book items:books) {
System.out.println(items.getBookName());
} session.close(); } ///智能标签where + foreach array 进行多条件查询
@Test
public void t7selectZhiNengByForeachArray(){
SqlSession session= MyBatisUtils.getSession(); IBookDAO mapper = session.getMapper(IBookDAO.class);
int[] array={,};
List<Book> books = mapper.findtrueBookByForeachArray(array);
for (Book items:books) {
System.out.println(items.getBookName());
} session.close(); } ///智能标签where + choose进行多条件查询
@Test
public void t6selectZhiNengByChoose(){
SqlSession session= MyBatisUtils.getSession(); IBookDAO mapper = session.getMapper(IBookDAO.class);
List<Book> books = mapper.findtrueBookByChoose();
for (Book items:books) {
System.out.println(items.getBookName());
} session.close(); } ///智能标签where + if 进行多条件查询
@Test
public void t5selectZhiNengByIf(){
SqlSession session= MyBatisUtils.getSession(); IBookDAO mapper = session.getMapper(IBookDAO.class);
List<Book> books = mapper.findtrueBookByIf("心",);
for (Book items:books) {
System.out.println(items.getBookName());
} session.close(); }

打完收工

SSM-MyBatis-14:Mybatis中智能标签的更多相关文章

  1. 后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用

    mybatis pagehelper想必大家都耳熟能详了,是java后端用于做分页查询时一款非常好用的分页插件,同时也被人们称为mybatis三剑客之一,下面 就给大家讲讲如何在SSM项目和sprin ...

  2. java web,从零开始,一步一步配置ssm(Spring+SpringMVC+MyBatis)框架

    1.安装JDK: 安装之后要配置环境变量,在系统变量里: 新建变量名JAVA_HOME,变量值C:\Program Files\Java\jdk1.8.0_77: 新建变量名CLASSPATH,变量值 ...

  3. SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别

    SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...

  4. SSM Spring+SpringMVC+mybatis+maven+mysql环境搭建

    SSM Spring+SpringMVC+mybatis+maven环境搭建 1.首先右键点击项目区空白处,选择new->other..在弹出框中输入maven,选择Maven Project. ...

  5. SSM(Spring + Springmvc + Mybatis)框架面试题

    JAVA SSM框架基础面试题https://blog.csdn.net/qq_39031310/article/details/83050192 SSM(Spring + Springmvc + M ...

  6. SSM(Spring +SpringMVC + Mybatis)框架搭建

    SSM(Spring +SpringMVC + Mybatis)框架的搭建 最近通过学习别人博客发表的SSM搭建Demo,尝试去搭建一个简单的SSMDemo---实现的功能是对用户增删改查的操作 参考 ...

  7. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

  8. 使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架

    基本概念 使用SSM(Spring,SpringMVC和Mybatis) 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod  ...

  9. MyBatis系列四 之 智能标签进行查询语句的拼接

    MyBatis系列四 之 智能标签进行查询语句的拼接 使用Foreach进行多条件查询 1.1 foreach使用数组进行多条件查询 在MyBatis的映射文件中进行如下配置 <!--根据数组进 ...

随机推荐

  1. (视频)《快速创建网站》2.1 在Azure上创建网站及网站运行机制

    现在让我们开始一天的建站之旅. 本文是<快速创建网站>系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 1. 网站管理平台WordPress和 ...

  2. Java-HttpServlet

    /** * * Provides an abstract class to be subclassed to create * an HTTP servlet suitable for a Web s ...

  3. eclipse或者AS链接手机真机之后,logcat里面日志信息乱跳

    乱跳的日志信息不会对应用产生影响,但是它会影响视觉,影响查看logcat.那主要原因在哪里呢 ? 这是由于手机里面,正在的运行的进程太多导致的.^_^ 因此课件添加过滤器的作用之大. 对了,在logc ...

  4. SpriteBuilder中锚点的一般用法

    注意:改变节点的锚点(anchor point)将会影响缩放和旋转操作,也会影响边界边框和碰撞的检测. 锚点仅仅挪动节点的视觉表现,这种改变可能与物理表现不一致. 你绝不应该错误的挪动锚点去改变节点的 ...

  5. LeetCode(38)-Valid Sudoku

    题目: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

  6. javascript语言扩展:可迭代对象(3)

    除了前2篇文章中描述的可迭代对象以外,在js语言扩展中的生成器对象,也可以作为可迭代对象. 这里用到一个新的关键字yield,该关键字在函数内部使用,用法和return类似,返回函数中的一个值:yie ...

  7. C标准中关于空指针的那些事

    1 C标准不保证用所有二进制位都为0的变量来表示空指针,但它保证空指针与任何对象或函数的指针都不相等,取地址操作符&永远也不会返回空指针: 2 C标准称在指针上下文中的"值为0的整形 ...

  8. rails将类常量重构到数据库对应的表中之二

    在博文之一中我们将Order中的常量重构到了数据库的表中,也做了一些测试,貌似一切都很完美.可是...梦魔还未开始啊!我们少做了一步测试,就是rake test! 结果惨不忍睹,所有测试都是E,全部出 ...

  9. json的命名空间

    <script>var zgz={}; zgz.common={ getByClass: function () { }, myAddEvent: function () { }}; zg ...

  10. datagrid 新增,并行内编辑,提交保存

    <a class="mini-button" iconCls="icon-add" onclick="addRow()" plain= ...