mybatis动态sql

1.1 if1.2 trim1.3 foreach1.4 其他choose/set/where
动态sql代码展示
<select id="list1" parameterType="com.maven_mybatis.vo.BookVo" resultType="com.zking.maven_mybatis.model.Book">select<include refid="Base_Column_List"/>from t_book where 1=1<if test="bids != null">and book_id in<foreach collection="bids" item="bid" open="(" close=")" separator=",">#{bid}</foreach></if></select>

2.模糊查询(3种方式)

2.1 参数中直接加入%%2.2 使用${...}代替#{...}(不建议使用该方式,有SQL注入风险)
   #{...}与${...}区别?参数类型为字符串,#会在前后加单引号['],$则直接插入值1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by '111', 如果传入的值是id,则解析成的sql为order by "id".2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,如果传入的值是id,则解析成的sql为order by id.3. #方式能够很大程度防止sql注入。4. $方式无法防止Sql注入。5. $方式一般用于传入数据库对象,例如传入表名. 6. 一般能用#的就别用$.
      注:mybatis中使用OGNL表达式传递参数    优先使用#{...}      ${...}方式存在SQL注入风险2.3 SQL字符串拼接CONCAT

3.查询返回结果集

resultMap:适合使用返回值是自定义实体类的情况
resultType:适合使用返回值的数据类型是非自定义的,即jdk的提供的类型3.1 使用resultMap返回自定义类型集合3.2 使用resultType返回List<T>3.3 使用resultType返回单个对象3.4 使用resultType返回List<Map>,适用于多表查询返回结果集3.5 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集

4.分页查询

为什么要重写mybatis的分页?
Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量offset和边界limit取结果),在大数据量的情况下这样的分页基本上是没有用的

4.1 导入分页插件 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.2</version></dependency>4.2 将pagehelper插件配置到mybatis中<!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 --><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>4.3 在你需要进行分页的Mybatis方法前调用PageHelper.startPage静态方法即可,紧跟在这个方法后的第一个Mybatis查询方法会被进行分页//设置分页处理if (null != pageBean && pageBean.isPaginate()) {PageHelper.startPage(pageBean.getCurPage(), pageBean.getPageRecord());}4.4 获取分页信息(二种方式)4.4.1 使用插件后,查询实际返回的是Page<E>,而非List<E>,Page继承了ArrayList,同时还包含分页相关的信息Page<Book> page = (Page<Book>)list;System.out.println("页码:" + page.getPageNum());System.out.println("页大小:" + page.getPageSize());System.out.println("总记录:" + page.getTotal());4.4.2 使用PageInfoPageInfo pageInfo = new PageInfo(list);System.out.println("页码:" + pageInfo.getPageNum());System.out.println("页大小:" + pageInfo.getPageSize());System.out.println("总记录:" + pageInfo.getTotal());

5.特殊字符处理
>(>)
<(<)
&(&)
空格( )

<![CDATA[ <= ]]>

Mybatis动态sql和分页相关推荐

  1. mybatis动态sql及分页

    1. 动态sql简述 mybatis的动态sql语句是基于OGNL表达式的.可以方便的在sql语句中实现某些逻辑. 总体说来mybatis动态SQL语句主要有以下几类: if 语句 (简单的条件判断) ...

  2. mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20

    一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...

  3. MyBatis动态SQL之 set 和 trim标记的使用示例

    2019独角兽企业重金招聘Python工程师标准>>> 和之前的where一样,set和trim也是智能标记 在之前的user.xml中添加 <update id=" ...

  4. MyBatis动态SQL(认真看看, 以后写SQL就爽多了)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...

  5. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...

  6. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...

  7. MyBatis动态SQL,写SQL更爽

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...

  8. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 整理 ...

  9. MyBatis——动态SQL语句——if标签和where标签复合使用

    功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...

最新文章

  1. 批量移动某目录下某类型的文件到指定的目录下
  2. [LUOGU] P4342 [IOI1998]Polygon
  3. c语言两个数组按位合并,合并两个线性表(数组)并按照非递减排序输出,有点问题过来看看...
  4. hdoj1428 -- 漫步校园 (记忆化搜索)
  5. SAP 电商云 Spartacus UI feature level 的一个测试
  6. java断言assertequals_如何实现Java测试的自定义断言
  7. Android一个简单易用的进度条
  8. java arraylist 赋值_ArrayList源码解析,老哥,来一起复习一哈?
  9. 基线管理之Windows安全配置
  10. bootstrap—预定义样式风格
  11. RK3399 制作更新logo.img
  12. File-backed Storage
  13. 自定义UTI 注册你的APP所支持的文件类型
  14. css画心形原理,如何用 css 画一个心形
  15. vim编辑器删除键失效问题
  16. 0918 iOS10兼容/iOS系统过高或过低配置包/混合引擎的在线视频连麦互动直播/源码管理工具/Xcode8插件升级/导航栏渐变
  17. 入网模组 | 广和通G510无线GPRS模块接入方案
  18. iOS- JSPatch 热更新
  19. 在MOSS 2007中自定义DataView Webpart的数据显示样式
  20. 高等数学——反常积分的收敛法

热门文章

  1. solidity 合约继承
  2. 【Unity】获取当前物体下的所有子物体
  3. 5G扬帆 -- 2022中国国际信息通信展推出数字医疗健康展区
  4. 传奇服务器都有哪些文件,传奇服务端MonUseItems文件夹什么用?
  5. 35岁后遭遇中年失业,除了送快递和开网约车,还能干什么工作?
  6. Windows 7文件权限工具 v1.0
  7. 软考系统集成项目管理工程师视频教程(下)-乔俊峰-专题视频课程
  8. 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少
  9. 计算机网络(自顶向下方法)学习记录---3.4 可靠数据传输原理
  10. 06-jQuery中的防抖和节流