Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)
1.Mybatis注解开发之动态SQL语句
背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句.
注意:Mybatis的动态sql语句开发, 可以分为三种写法:
1.脚本动态sql语句
2.方法中定义sql
3.结构化sql
2.案例环境
2.1.实体类 User(提供了Get、Set、toString方法)
2.2.接口 IUserDao
2.3.需求
使用动态sql, 执行IUserDao接口内的findUserByCondition方法
如果username属性有值,则查询条件中加上username=值
如果sex属性有值,则查询条件也商家 sex=值
3.动态SQL实现
3.1.脚本动态SQL语句
把xml中的动态sql语句, 直接拷贝到注解中, 并使用script标签包括起来即可
3.2.方法中定义sql语句
3.2.1.需要定义一个专门用于生成动态sql语句的类. 并在类中定义一个专门给findUserByCondition()方法生成sql语句的方法.
3.2.2.可以在方法中利用SELECT( ), FROM( ), WHERE( )等动态生成sql语句.
3.2.3.把该类的该方法,配置到接口的findUserByCondition()方法上,表示该方法所使用的查询的sql语句,由UserDynaSqlProvider类的findUserByConditionSql方法提供
3.3.结构化sql语句
注意: 该方式和方式2一模一样, 只是在组装sql语句时的语法有少许区别.
3.3.1需要定义一个专门用于生成动态sql语句的类. 并在类中定义一个专门给findUserByCondition()方法生成sql语句的方法.
3.3.2.可以在方法中利用SELECT( ), FROM( ), WHERE( )等动态生成sql语句
3.3.3.把该类的该方法,配置到接口的findUserByCondition()方法上,表示该方法所使用的查询的sql语句,由UserDynaSqlProvider类的findUserByConditionSql方法提供
测试
如果测试代码如下:
则程序运行产生的sql语句是:
select * from user where (username = ?)
运行结果是:
如果测试代码如下:
则程序运行产生的sql语句是:
select * from user where (username = ? and sex = ?)
运行结果是:
Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)相关推荐
- Mybatis注解-注解方式的动态SQL语句
基于手写SQL语句的注解CRUD 把手写SQL语句的注解CRUD,修改为动态SQL语句方式. CategoryDynaSqlProvider 新增CategoryDynaSqlProvider,提供C ...
- Mybatis第三天动态Sql语句、XML中一对多、多对一、多对多该怎么写
Mybatis第三天 Mybatis中使用unpooled配置连接池原理分析 Mybatis中使用pooled配置连接的原理分析 Mybatis中的事务原理和自动提交设置 Mybatis中的动态sql ...
- IBatis.net动态SQL语句(六)
在学习动态SQL语句之前,首先必须对条件查询有一定了解,先来学习如何向IBatis.Net的映射文件里传入参数. 一.条件查询 1.传递单个参数 如根据Id查询: <select id=&quo ...
- java元婴期(24)----java进阶(mybatis(3)---动态sql(重点))
什么是动态sql mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 标签介绍 1.if标记(if是动态sql中最最常用的标记) 动态 SQL 通常要做的事情 ...
- Mybatis(13)动态sql语句if/where/foreach
创建项目day03_eesy_02dynamicSQL,复制Mybatis(12)中项目day03_eesy_01datasourceAndTx if标签的使用,针对查询 1.更改IUseDao接口 ...
- java注解的开发_使用Java注解开发自动生成SQL
使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...
- Mybatis 注解开发 + 动态SQL
Hello 大家好我是橙子同学,今天分享注解Mybatis注解开发+动态sql 目录 每文一铺垫(今天有小插曲哦) 注解开发 添加 @Insert 删除 @Delete 查询 @Select 修改 @ ...
- 02JavaWeb之MyBatis详解、SqlSession执行、mapper代理执行、动态SQL语句、注解开发、resultMap、resultType、多参数传递
MyBatis MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发,它封装了JDBC大部分的操作. MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由 ...
- mybatis注解开发动态sql
mybatis注解开发动态sql 本篇来讲一下如何使用mybatis注解模式中的动态sql 先来讲一下什么是动态sql 在我们实际开发的时候可能会出现很多方法需要一条很相似的sql语句来进行增删改查, ...
最新文章
- 【Win 10 应用开发】将墨迹保存到图像的两种方法
- ipv6下单播。组播 泛播
- java svgbase64转byte_java 图片进行base64 编码解码
- Android PC投屏简单尝试(录屏直播)2—硬解章(MediaCodec+RMTP)
- 计算机学校专业工学,大学专业详解:工学(仪器仪表类)
- Java1.8接口方法都是抽象_抽象类和接口的区别以及jdk1.8之后接口里面可以实现方法...
- 配置classpath,引入jar包
- brew 安装php7.1.6_mac上通过brew安装php7
- Xcode7中你一定要知道的炸裂调试神技(转)
- 第一篇:CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )
- cdr宏教程_cdr软件怎么使用宏批量导出文件?
- akka typed mysql_akka-typed(8) - CQRS读写分离模式
- 乒乓球比赛赛程_2018国际乒联乒乓球重大赛事详细赛程表,看点爆点早知道
- 论文阅读Check it again:Progressive Visual Question Answering via Visual Entailment
- 【附PPT下载】2021腾讯广告算法大赛 ACM MM Grand Challenge录用论文揭晓
- BOSE QC35 蓝牙卡顿,断断续续问题
- css:currentColor和inherit属性的区别
- 1094 谷歌的招聘(测试点2说明)
- python 文件和文件夹操作
- QT核心机制3:信号与槽