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

MyBatis动态SQL语句

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

MyBatis动态SQL语句

动态sql

通过Mybatis提供的各种标签对条件做出判断以实现动态拼接SQL语句。主要解决查询条件不确定的情况下:即多条查询条件,提交的查询条件不足则执行的SQL语句不同。不便于将所有的条件进行排列组合

简化代码

比如要通过不同的条件查询相同的实体

User queryUserById(@Param("id") Integer id);
User queryUserByName(@Param("name") String name);

通过动态sql实现查询的mapper


	select * from User



	
	where id = #{id}


如果不使用动态sql,则上述的body部分就会写两遍,一般的查询语句会要求列出需要查询的项,这样重复的代码量就会更多,所以动态sql还是比较有优势的。

bind标签

MyBatis提供bind来解决:在进行模糊查询的时候,如果使用 “${}” 拼接字符串,则无法防止SQL注入的问题。如果使用字符串拼接函数或连接符号,不同数据库的拼接函数或者连接符号不同

在UserMapper.xml文件中使用


resultMap标签

解决: 实体类属性名和数据库表中字段名不一致的情况,可以将查询结果映射成实体对象
具体理解: 数据库中的字段与实体类中定义的字段代表的是一个意思,但是两者的表示方式(名称)略有差异,或者是要修改一个字段,必定要在另一个文件找到与之对应并全部修改,为了简化,则使用resultMap进行映射,在后续进行修改的时候,只用修改映射中的映射字段即可。

一般形式

    
        
        
    

一对一多表查询:association

以下面的例子为例:使用assocaition映射关联对象User的结果


    
    
    
    
    
    
    
        
    
        
        
        
        
    

一对多查询:collection

同样以下面的例子做说明:首先映射了User类的结果,然后使用一对多的关系collection标签配置Order的结果。其结果是查询出用户信息及其订单集合信息。


    
    
    
    
    

    
    
        
        
        
        
        
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号