Mybatis中sqlmapper和注解的动态sql用法

目录

什么是动态SQL

sqlmapper常用的动态SQL元素

if 元素

choose 元素

where 元素 

set 元素 

trim 元素 

foreach 元素

bind 元素

注解版的动态SQL

脚本动态sql

方法中构建动态sql

SQL 语句构造器


什么是动态SQL

即通过Mybatis提供的各种标签对条件作出判断已实现动态拼接SQL语句,实现对数据库更准确的操作。

sqlmapper常用的动态SQL元素

 接下来我们来逐一介绍~

 

if 元素

        进行单条件的分支判断

 

在此条件中可以有三种情况:

  1. 两个条件都执行
  2. 只执行其中一个
  3. 无条件全查 

 注意:拼接 SQL 语句的时候注意 AND和逗号。

 

choose 元素

        多条件分支判断,执行 顺序和写入顺序有关,相当于switch结构

当遇到的条件满足的时候则不再继续执行后面的条件

注意:拼接 SQL 语句的时候注意 AND和逗号。 

 

where 元素 

  1. 没有任何条件的时候,where标签整体不出现,也不会添加where关键字
  2. 将遇到的第一个and去掉没有其他表达式的时候
  3. 当有条件的时候会添加一个where关键词 

 

set 元素 

  1. 添加一个set关键词
  2. 每个条件后必须加逗号,set标签会自动去除sql语句中最后一个逗

        set标签元素主要是用在update操作 

 

trim 元素 

        万能标签 能替代 where/set 标签  

 

foreach 元素

        查询多个 循环语句

有两种方式:

  • 参数是数组  关键词:array
  • 参数是集合  关键词 :list 

 在测试类中的体现:

 

bind 元素

         自定义一个上下文变量。

         可用于进行模糊查询

 

注解版的动态SQL

脚本动态sql

        需要在sql语句中加入“<script></script>”标签

 

方法中构建动态sql

        在接口中定义内部类,来构建需要的动态sql语句

 查询示例:

 

SQL 语句构造器

         没有过多的使用类如 and的连接词

查询举例:

 修改举例:

 

 删除举例:

 

 

 

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.junit 常用注解 @Before 初始化方法,每次测试方法调用前都执行一次。 @After 释放资源:每次测试方法调用后都执行一次 @Test 测试方法:在这里可以测试期望异常和超时时间 @ignore 忽略的测试方法 @BeforeClass 针对所有测试,只执行一次,且必须为static void @AfterClass 针对所有测试,只执行一次,且必须为static void @RunWith 指定测试类使用的某个运行器参数SpringJUnit4ClassRunner.class @Parameters 指定参数类的参数数据集合 @Rule 允许灵活添加或重新定义测试类的每个测试方法的行为 @FixMethodOrder 指定测试方法的执行顺序 @ContextConfiguration 参数locations="classpath:spring-mybatis.xml" 指向src下的该文件 执行顺序: @BeforeClass---@Before---@Test---@After---@Before ---@Test---@After---@AfterClass junit与main方法相比的优势:代码量少、结构清晰、灵活性更好 main:一个类只能有一个main方0法 层次结构方面不够清晰 运行具体某一个方法时,要将其他的方法注释掉 2.mybatis的基本配置 1.dao层接口 2.mapper.xml:编辑需要执行的sql语句 (1)mapper标签的namespace属性:指定该xml对应的dao层接口的路径 3.spring-mybatis.xml:spring集成mybatils的配置文件 (1)配置sqlSessionFactory指定要操作的数据库,以及mapper.xml的所在目录 (2)配置指定的dao层接口的目录 3.mybatis的注意事项 1.xmlsql不得有分号 2.sql语句操作的表明和列名 3.xml的小于号:$lt;大于号¥> 4.取变量时,如果dao层接口使用的是@param("别名")注解,则根据别名取值 5.mapper.xml$和#取值的区别 4.mybatis的xml如何设置返回值 resultType返回的数据类型 5.$和#区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql。如:order by ${user_id}, 如果传入 的值是id,则解析成的sql为order by id. 3. #方式能够很大程度防止sql注入。 4. $方式无法防止Sql注入。 5. $方式一般用于传入数据库对象,例如传入表名. 6. 一般能用#的就别用$ MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
什么是MyBatis?............................................................................................................. 5 入门................................................................................................................................. 5 从XML构建SqlSessionFactory .............................................................................. 5 不使用XML构建SqlSessionFactory........................................................................... 6 从SqlSessionFactory获取SqlSession....................................................................... 6 探究已映射的SQL语句 ............................................................................................ 7 命名空间的一点注释 .......................................................................................... 8 范围和生命周期 ........................................................................................................ 8 SqlSessionFactoryBuilder ..................................................................................... 8 SqlSessionFactory................................................................................................ 9 SqlSession .......................................................................................................... 9 Mapper实例 ....................................................................................................... 9 XML映射配置文件 ........................................................................................................ 10 properties................................................................................................................. 10 Settings ....................................................................................................................11 typeAliases .............................................................................................................. 12 typeHandlers ............................................................................................................ 13 objectFactory ........................................................................................................... 14 plugins .................................................................................................................... 15 environments............................................................................................................ 16 transactionManager ............................................................................................ 17 dataSsource....................................................................................................... 17 mappers ................................................................................................................... 19 SQL映射的XML文件 ................................................................................................... 19 select....................................................................................................................... 20 insert,update,delete .............................................................................................. 21 sql........................................................................................................................... 23 Parameters ............................................................................................................... 24 resultMap ................................................................................................................ 25 高级结果映射................................................................................................... 27 id,result.......................................................................................................... 29 支持的JDBC类型 ............................................................................................ 30 构造方法.......................................................................................................... 30 关联................................................................................................................. 31 集合................................................................................................................. 34 鉴别器 ............................................................................................................. 36 缓存........................................................................................................................ 38 使用自定义缓存 ............................................................................................... 38 参照缓存................................................................................................................. 39 动态SQL ................................................................................................................ 39 if ..................................................................................................................... 40 choose, when, otherwise ..................................................................................... 40

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值