栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

企业智能软件开发(五)—SpringBoot与Mybatis(增删改查xml化)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

企业智能软件开发(五)—SpringBoot与Mybatis(增删改查xml化)

目录
    • Mybatis的XML映射文件
      • 类型别名typeAliases
      • 结果映射ResultMap
      • Mybatis解决连续条件使用
      • 代码展示部分

Mybatis的XML映射文件

前面我们是将SQL语句绑定在USerDao类中,下面我们使用的是更为灵活的方法,将SQL语句写到xml映射文件中。

使用xml映射的优点:

使用多条件映射的SQL语句时,例如:
SELECt * FROM t_user where birthday >= (#{date1}) and birthday <= (#{date2})
这条SQL语句中使用了有两个条件。
如果使用的是UserDao绑定的方法,这条SQL语句就得是固定不变的。当我们要只需要其中的一个查询条件,又不想传1=1给SQL。
XML映射就可以解决这种方法。

我们的XML映射和UserDao绑定的方法是可以混合使用的,但是注意的是,我们不可以在同一个方法中同时使用XML映射和UserDao绑定。使用方法在
Mybatis解决连续条件使用中参考使用。

使用XML映射的几个条件:

  1. 使用的XML映射文件需要放在与UserDao类同一个包下

  2. 使用的xml文件中的namespace和需要绑定的Dao接口全限定名一致

  3. 使用的XMl文件的ID需要和UserDao类的方法名一致

  4. 使用的返回类型需要和UserDao类的返回类型一致

类型别名typeAliases

  1. 上面我们使用的XML文件中返回的类别名书写太长,比较麻烦。
    使用类型别名typeAliases可以简化返回别名的书写。
# 注:该类型别名加入到src/main/resources下的application.properties
# 简化xml的开发
# mybatis类型别名
mybatis.type-aliases-package=com.test.bean

加入类别名之后我们只需要在返回别名中写User皆可。

  1. 每一个在包 com.iflytek.bean中的 Java Bean,默认会使用 Bean 的首字母小写的非限定类名来作为它的别名

  2. 如果需要修改默认的别名,可以使用@Alias注解,如

  • 这里我插播一条能,调整dao类的日志输出等级,使其在控制台打印执行的SQL语句的application.properties配置
#调整dao类的日志输出等级,使其在控制台打印执行的SQL语句
logging.level.com.iflytek.dao=debug

输出效果如下

结果映射ResultMap
  1. 在数据库名与javaBean类属性名相同的情况下,MyBatis会自动匹配SQL与JavaBean中相同字段的参数作为返回。

  2. 在数据库名与javaBean类属性名不相同的情况下,就需要映射ResultMap来解决返回的问题。

	
								   
		
		
		  
	

注意, 节点中resultMap和resultType只能二选一

Mybatis解决连续条件使用
这里说明标签==,。这两个标签通常包含标签使用。
1. where会判定第一个使用到的if标签并消除if标签中的前面的and连接词,
如果一个条件都没有使用到那么就默认为无条件SQL操作。
2. set会判定第一个使用到的if标签并消除if标签中的后面的 , 符号。

where代码段:


		SELECT * FROM t_user 
		
		
			and birthday  >= (#{date1}) 
		
		
			and birthday  <= (#{date2})
			
		
	

set代码段:

	
		update t_user 
		
		
			real_name=#{realName},
		
		
			phone=#{phone},
		
		
			email=#{email}
		
		 
		  where id=#{id}
	
  • 了解更多的SQL语句XML映射操作请参考Mybatis动态SQL
代码展示部分

XML部分




	
								   
		
		
		  
	
	
	
		select * from t_user where real_name like concat('%',#{realname},'%');