中午找了好久、好多人写的都驴头不对马嘴。自己实现后、才发现是真的不麻烦、也不知道人家咋想的、写的死麻烦还没用。老是搜出sql语句写死的。我要的是动态滴。自己写出后、总结了一下

1、按照书名、作者、出版社搜索容易实现。这里就是对应数据库中的一个个字段、只需要在编写的sql中添加条件即可。
废话不多说、直接上代码:

前端(用来收集查询的条件):

 <div class="row ">
<form th:action="@{/book/bookList}" style="float: left"> <div class="col-md-2">
<input type="text" name="queryBookName" class="form-control" placeholder="书籍名">
</div>
<div class="col-md-2" >
<input type="text" name="queryBookAuthor" class="form-control" placeholder="作者名">
</div>
<div class="col-md-2" >
<input type="text" name="queryBookAddress" class="form-control" placeholder="出版社">
</div> <div class="col-md-4" >
<div class="col-row">
<div class="col-md-5">
<input type="text" name="minPrice" class="form-control" placeholder="最低价格">
</div>
<div class="col-md-1">
<span><strong>:</strong></span>
</div>
<div class="col-md-5">
<input type="text" name="maxPrice" class="form-control" placeholder="最高价格">
</div>
</div> </div>
<input type="submit" value="查询" class="btn btn-primary">
</form> </div>

实现的前端效果是这样的(我这里用的bootstrap) 其他的也可以、主要用来收集数据嘛。
用一个表单来收集数据、也可以单独的一个个数据的收集。使用表单收集数据还有的一个好处就是可以根据多个目标条件进行数据库的搜索。相当于一次性追加几个查询条件。

编写的sql语句、where 1=1 相当于sql语句不带任何的查询约束条件。等价于 select * from a
然后追加条件(我这里使用的mybatis框架、不影响sql语句的编写)

 <select id="queryBookList" parameterType="com.example.zheng.pojo.Books" resultType="com.example.zheng.pojo.Books">
select * from bookss
<where>
1=1
<if test="bookName != null and bookName != ''">
And bookName =#{bookName}
</if>
<if test="bookAuthor != null and bookAuthor != ''">
And bookAuthor =#{bookAuthor}
</if>
<if test="address != null and address !=''">
And address =#{address}
</if> </where>
</select>

重点在这里、怎样实现价格在一定范围内查询。由于价格是一个变化的、而且不和数据库中的字段对应。我首先想到的是 price >minPrice and price <maxPrice 。结果发现编写的sql语句报错、将编写的sql语句放入sql控制台查询是可以的、后来查阅资料发现。在mybatis中<是不能被识别的、需要使用转移字符 &lt;。我真的是靓仔无语。

1、前端页面定义参数、将数据收集。然后在后端将接受的数据封装到实体类中(在实体类中新增两个最大价格和最小价格的属性)。然后在进行查询就可以了。

   <if test="minPrice !=null and minPrice !=''">
And price > #{minPrice}
<if test="maxPrice !=null and maxPrice !=''">
And price &lt; #{maxPrice}
</if>
</if>

动态搜索图书:可以按书名、作者、出版社以及价格范围进行搜索。(在IDEA中mybatis)的更多相关文章

  1. C#动态生成图书信息XML文件

    通过C#动态生成图书信息XML文件,下面有个不错的示例,需要的朋友可以参考下 通过C#动态生成图书信息XML文件(Books.xml),文件如下: 复制代码代码如下: <?xml version ...

  2. 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。

    jsp结合SQLSERVER向数据库中的表添加图书信息. 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中.需要对提交的信息进行修改,信息填入不 ...

  3. 爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中

    爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中 准备使用的环境和库Python3.6 + requests + bs4 + csv + multi ...

  4. 搜索分析(DFS、BFS、递归、记忆化搜索)

    搜索分析(DFS.BFS.递归.记忆化搜索) 1.线性查找 在数组a[]={0,1,2,3,4,5,6,7,8,9,10}中查找1这个元素. (1)普通搜索方法,一个循环从0到10搜索,这里略. (2 ...

  5. SharePoint 2013 搜索SharePoint 特定列和特定文档(自己定义搜索)

    SharePoint 2013 搜索SharePoint 特定列和特定文档 1,操作步骤和图例,因语言和版本号的不同 我尽量使用抓图方式. 2.  In Central Administration, ...

  6. jQuery 对页面元素的搜索包括父元素、同辈元素、子元素的搜索

    1.父元素搜索 (1)parents([selector]) 方法 $("p").parents().css("border","1px solid ...

  7. 搜索页面scroll下拉时候进行刷新,显示更多搜索值

    1.封装扩展scroll.vue功能: //props传值 pullup:{ type:Boolean, default:false } _initScroll(){ if(!this.$refs.w ...

  8. 记忆化搜索:POJ1579-Function Run Fun(最基础的记忆化搜索)

    Function Run Fun Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14815 Accepted: 7659 Des ...

  9. php 数组动态添加实现代码(最土团购系统的价格排序)

    最近在实现最土团购系统的价格排序功能,需要对$oc数组进行扩展,经过测试用下面的方法即可. 核心代码如下: <?php $now=time(); $oc = array( 'team_type' ...

随机推荐

  1. ARC129E Yet Another Minimization 题解 【网络流笔记】

    超神的建模,极其有借鉴意义/cy 注:该建模对应于最小割建模 对于 \(n\) 个数,每个数有 \(m\) 种取值的技巧 \(\forall i=1,2,\dots,n\),令 \(S=V_{i,0} ...

  2. TS入门基础

    1,使用node.js 2,配置typescript node i -g typescript 3,创建ts文件 使用tsc + <文件名>在命令行中跑可以跑出一个一样得js文件默认生成的 ...

  3. Pulsar Summit Asia 2020 中文专场议题出炉!

    关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...

  4. 图片系列(6)不同版本上 Bitmap 内存分配与回收原理对比

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  5. Docker 09 可视化

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  6. Kotlin协程解析系列(上):协程调度与挂起

    vivo 互联网客户端团队- Ruan Wen 本文是Kotlin协程解析系列文章的开篇,主要介绍Kotlin协程的创建.协程调度与协程挂起相关的内容 一.协程引入 Kotlin 中引入 Corout ...

  7. Spring AOP全面详解(超级详细)

    如果说 IOC 是 Spring 的核心,那么面向切面编程AOP就是 Spring 另外一个最为重要的核心@mikechen AOP的定义 AOP (Aspect Orient Programming ...

  8. 入门 Socket.io

    概念 Socket.io 是一个支持客户端和服务器之间的低延迟.双向和基于事件的通信的库,除了支持 JavaScript 以外,还支持 Java.Python.Golang. Socket.io 构建 ...

  9. CCPC比赛与算法学习的个人分享

    大赛简介 中国大学生程序设计竞赛(China Collegiate Programming Contest,简称CCPC)是工业和信息化部教育与考试中心主办的 "强国杯"技术技能大 ...

  10. QQ高级功能

    本篇文章为微信公众号:酿俗 教学内容请跟着小编一起探索吧! 第一步解锁微信豆影藏内容 随后下载需要的材料,注意!手机可能会提示有病毒!这里使用这些功能报病毒很正常 其实并没有病毒只是手机厂商的安全系统 ...