首页 > 技术文章 > MyBatis(五)--日志与逻辑运算

qqwhsj 2019-06-16 13:41 原文

一 日志文件的实现

1.日志包(log4j)导入,具体看第一条

2.日志配置文件(放在src目录下,且名字为【log4j.properties】),这是MyBatis中写好的东西,所以并不能像MybatisConfig一样自行解决

算了欠着,感觉日志这一栏要专门搞

二 MyBatis中逻辑运算的使用

1.<if>的使用

(1)基本使用

 

当goods有值时

查询结果:select * from goods where 1=1 and mid=?

 当没有值时

查询结果:此处异常时因为:我写的返回值为Goods对象,没有值时会返回多条数据List结果

(2)多条语句:在这里没有if else if结构,当多条判断时使用,注意&& 与 || 使用and  和 or 代替

(3)<where> 标签:有心人已经注意,在from以后多了个where 1=1 , where的原因是如果多条件查询的话将where放置于<if>标签中,是无法确保得到的;而1=1是为了配合and使用,因为 where 头一个条件是不需要and的,但是<if>标签是无法确保第一条究竟是谁的,所以才有 where 1=1的存在。但是计算机本身对于这种确定不需要修改的操作是可以通过一些东西改变的,<where>标签就此诞生,下方代码与上方相同。

where标签的作用在于,添加where并且将第一条真的执行的语句的and去掉

(3)set中的if标签,对于if的使用,我们不仅仅是在where中使用,在update语句中,set语句依旧需要使用。相信你也注意到,这些标签的本质就是拼接字符串,set的语法与where是有很大的不同的,所以标签的写法也不同

 

执行语句

执行结果

这里可以看到,相较于where考虑语句前的and,我们需要考虑的是每个语句后面的逗号,所以在结尾加上mid=#{mid},因为对于对于大多数表来说,是不会允许或者不建议修改主键的。

与where相同,update语句的set同样可以使用set 代替,set的作用在于添加set 并且将真正执行的最后一句语句的逗号,去掉。

执行结果

2.<choose>标签的使用:与switch语句使用类似,但是多选一,when相当于case,otherwise则是when全部无效时使用。

(1)where中的使用,其他与<if>标签类似

执行过程

 

执行结果

可以看出,即使有两个条件,但是当第一个条件判断成功后,就不会往下执行了,相当于break。

(2)<set>标签的使用:其实不常用,因为set修改并非只修改一个就够了

3.<foreach>标签的使用

(1)标签属性:相较于if 与 choose比较复杂    

    item表示集合中每一个元素进行迭代时的别名,
    index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
    open表示该语句以什么开始,
    separator表示在每次进行迭代之间以什么符号作为分隔 符,
    close表示以什么结束。

(2)多使用与in中,多个对象的查询(又非全对象)

执行语句

执行结果:

 

推荐阅读