MyBatis--动态SQL
来源:互联网 发布:js 获取html属性值 编辑:程序博客网 时间:2024/06/05 23:51
之前的项目中已经实现了(根据笔记ID修改笔记的功能)
其中Dao接口为方法一:
//在编辑笔记区域根据笔记ID修改笔记,返回影响数据的条数(两个方法功能相同,第二个方法使用动态SQL)public int updateNote(Note note);public int updateNoteByMap(Map<String,Object> map);现在使用动态SQL来实现,因为有可能笔记修改的时候只是修改了某一些属性,在SQL中不用将所有的属性都进行更新,这样可以提高系统性能
示意图如下:
先将需要传递的传输放入Map<String,Object>中,然后将Map作为一个参数来使用
Mapper文件:
<!-- 在编辑笔记区域根据笔记ID修改笔记,使用动态SQL title为map中的key, 如果没有修改cn_note_last_modify_time,则会产生多余的逗号,需要利用trim去掉多余逗号 如果有时间,就使用传过来的时间,若没有事件就是用MySql系统当前事件,choose相当于if else --> <update id="updateNoteByMap" parameterType="map"> update cn_note set <trim suffixOverrides=","> <if test="title!=null"> cn_note_title = #{title}, </if> <if test="body!=null"> cn_note_body = #{body}, </if> <choose> <when test="time!=null"> cn_note_last_modify_time = #{time} </when> <otherwise> cn_note_last_modify_time = unix_timestamp() </otherwise> </choose> </trim> where cn_note_id = #{noteId} </update>
---------------------------------------------------------
测试代码:
@Test//更具笔记ID修改笔记--使用动态SQLpublic void testUpdateNoteByMap(){//设置MapMap<String,Object> map = new HashMap<String, Object>();map.put("title", "Java");map.put("body", "Hello World");map.put("noteId", "9c612c62-7743-426d-850e-23a5eaa3454f");//次此处故意省略了参数 timedao.updateNoteByMap(map);}
若SQL语句有错,则会在报错中打印出错误的动态SQL语句
==================================================
批量删除笔记:
注意:在get请求中发送数据的key可以相同,例如:http://localhost:8080/cloud_note/delete.do?id=id1&id=id2
接收数据时当作一个数组来接收String[] id
批量删除笔记:
---------------------------------------------------------
Dao接口:
/*** 利用动态SQL批量删除笔记(真正的删除笔记--在cn_note_status_id=2的笔记中进行再次删除)* map中需要添加参数:ids代表被删除笔记的ID列表,status代表被删除笔记的状态属性* map={ids:[id1,id2,id3...],status:2}*/public int deleteNotes(Map<String,Object> map);---------------------------------------------------------
Mapper文件:
<!-- 批量删除笔记(真正的删除笔记,在cn_note_status_id=2的笔记中进行再次删除) --> <delete id="deleteNotes" parameterType="map"> delete from cn_note where <if test="status!=null"> cn_note_status_id = #{status} and </if> cn_note_id in <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </delete>---------------------------------------------------------
测试代码:
@Test//批量删除笔记(真正的删除笔记--在cn_note_status_id=2的笔记中进行再次删除)public void testDeleteNotes(){Map<String,Object> map = new HashMap<String, Object>();String id1 = "c87adda0dad44f0dae660a3c2d9c7f13";//demo中笔记:蛋蛋123String id2 = "f01543a3e776476387eed947e62688c8";//demo中笔记:测试TTString id3 = "f2805f05d7974a9e8509abfc33650777";//demo中笔记:测试王庆6String[] ids = {id1,id2,id3};map.put("ids", ids);map.put("status", 2);int n = dao.deleteNotes(map);System.out.println(n);}
阅读全文
0 0
- mybatis动态SQL语句
- MyBatis动态SQL
- MyBatis 动态SQL
- Mybatis 动态SQL
- MyBatis动态SQL
- MyBatis动态SQL完整版
- mybatis动态sql
- mybatis动态SQL语句
- mybatis动态SQL语句
- MyBatis的动态SQL
- MyBatis动态SQL
- MyBatis动态SQL
- MyBatis 动态SQL语句
- MyBatis动态SQL
- Mybatis组建动态SQL
- MyBatis 动态sql
- mybatis 动态SQL语句
- MyBatis动态SQL详解
- Struts2 如何用JS获取sx:datetimepicker选择的日期
- Android Drawable 和 xml文件转化关系
- CentOS 7 安装 ShadowSocks 客户端
- 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
- solr搜索结果按某字段排序
- MyBatis--动态SQL
- 八、Shell数组:shell数组的定义、数组长度
- vue常用UI组件
- cocos2dx-js Shader的使用(高斯模糊)
- 两篇文章掌握Python语法和内置函数功能(第一篇)
- chapter5 Pandas入门
- Vue.js学习随笔
- 关于echart热力图 官网demo展示
- Struts2从一个action转到另一个action的两种方法