Mybatis 中的转义字符及常用查询

一、转译符

1、特殊字符转译

<; < 小于
>; > 大于
&; &
&apos; 单引号
"; " 双引号

需要注意的是分号是必不可少的。 比如 a > b 我们就写成 a >; b
(分号需为英文状态下的,应为英文分号会将转译符直接显示为对应的符号,所以本文都是中文下的)

2、

在mybatis中这种符号将不会解析。如

 

二、常用的sql语句写法

1、模糊查询

user_name like CONCAT("%",#{userName},"%") and

2、月份查询

输入月份(2019-01),查找属于这个月份的记录

DATE_FORMAT(start_time,'%Y-%m')  DATE_FORMAT(#{theMonth},'%Y-%m')
and
DATE_FORMAT(end_time,'%Y-%m') = ]]>DATE_FORMAT( #{theMonth},'%Y-%m')
and

提示:DATE_FORMAT正则表达式(%Y-%m-%d %H:%i:%S)

3、时间区间查找

DATE_FORMAT(create_time,'%Y-%m-%d')  = ]]> DATE_FORMAT(#{startTime},'%Y-%m-%d') 
and
DATE_FORMAT(create_time,'%Y-%m-%d')   DATE_FORMAT(#{endTime},'%Y-%m-%d') 
and	

全部格式化成年月日格式进行时间对比。

4、resultMap嵌套

	
		
		
		
		
		
			
			
			
		
	

collection 嵌套:
如user类中有一个image图片类的集合List imageList,要将每个人的图片都嵌套存放在各自的imageList属性中。

  • ofType:嵌套类的类名。这里就写图片类名称Image。
  • property:主类中属性名。这里就填user类中的imageList。

5、查询



6、批量添加


		insert into
		user
		
		
			name,
			age
			
		
		values
		
			
			
				#{item.name},
				#{item.age},
				
			
		
	

相当于insert into user (name,age)values (张,20),(李,21),(王,22)·····

7、批量更新


		update user  set 
		name =
		
			
			when #{item.id} then #{item.name}
			
		,
		
		age =
		
			
			when #{item.id} then #{item.age}
			
		
		
		where id in
		
			#{item.id}
		
		
	

注意: set关键字只有一个;每个foreach之间有个逗号。
最后sql是这样:

 UPDATE categories SET
        display_order = CASE id
            WHEN 1 THEN 3
            WHEN 2 THEN 4
            WHEN 3 THEN 5
        END,
        title = CASE id
            WHEN 1 THEN 'New Title 1'
            WHEN 2 THEN 'New Title 2'
            WHEN 3 THEN 'New Title 3'
        END
    WHERE id IN (1,2,3)

你可能感兴趣的:(mybatis)