MyBatis从入门到入土——动态SQL(csdn)————程序.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
MyBatis是一个流行的Java持久层框架,它提供了一种灵活的方式来映射数据库操作与Java对象。动态SQL是MyBatis的一大特色,它极大地简化了复杂的SQL拼接问题,避免了传统方式下在Java代码中硬编码SQL语句的不便。在本篇中,我们将深入探讨MyBatis的动态SQL功能,包括`if`元素、`choose`、`when`和`otherwise`元素的使用。 `if`元素是动态SQL中最基础的部分,它的作用类似于Java中的`if`语句。在MyBatis中,`if`元素通过`test`属性来定义判断条件,这个条件通常是一个OGNL表达式。例如,以下是一个查询用户列表的示例: ```xml <select id="getList1" resultType="com.zhonghu.chat10.demo8.model.UserModel" parameterType="map"> SELECT id, name, age FROM user WHERE 1 = 1 <if test="id!=null">AND id = #{id}</if> <if test="name!=null and name.toString()!=''">AND name = #{name}</if> <if test="age!=null">AND age = #{age}</if> </select> ``` 在这个例子中,如果传入的Map参数中`id`、`name`或`age`非空,对应的条件将被添加到SQL语句中。`WHERE 1=1`的存在是为了确保无论是否有条件,都能正确地拼接SQL。 接下来,我们来看`choose`、`when`和`otherwise`元素,它们相当于Java的`switch`语句。`choose`是`switch`结构,`when`是各个`case`,`otherwise`则对应`default`。这些元素的使用方式如下: ```xml <choose> <when test="condition1">匹配条件1时的SQL</when> <when test="condition2">匹配条件2时的SQL</when> ... <otherwise>所有条件都不满足时的SQL</otherwise> </choose> ``` 例如,如果我们要根据不同的参数选择不同的查询条件,可以这样编写: ```xml <choose> <when test="id != null">AND id = #{id}</when> <when test="name != null and name != ''">AND name = #{name}</when> <when test="age != null">AND age = #{age}</when> <otherwise>AND some_default_condition</otherwise> </choose> ``` 这个例子中,如果`id`、`name`或`age`有一个非空,对应的条件将被执行。如果所有条件都不满足,`otherwise`内的SQL将会被拼接到SQL语句中。 除了上述两种方式,MyBatis还提供了`trim`、`where`、`set`等元素,用于更复杂和高效的SQL拼接。`trim`可以用来删除多余的前缀或后缀,`where`和`set`则会在适当的位置自动添加`WHERE`或`SET`关键字,使得SQL语句更加整洁。 MyBatis的动态SQL功能极大地提高了SQL构建的灵活性和代码的可维护性,让开发者能够更专注于业务逻辑,而不是繁琐的SQL拼接。通过熟练运用这些元素,可以编写出高效、易于理解和维护的MyBatis映射文件。






















剩余14页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【微信小程序源码】化妆品商城.zip
- 【微信小程序源码】画布:时钟.zip
- 【微信小程序源码】环球小镇.zip
- 【微信小程序源码】会议精灵.zip
- 【微信小程序源码】绘本跟读.zip
- 【微信小程序源码】婚庆.zip
- 【微信小程序源码】货币汇率.zip
- 【微信小程序源码】机器人兔兔.zip
- 【微信小程序源码】积分商城.zip
- 【微信小程序源码】基础商城.zip
- 【微信小程序源码】吉林宝商城r.zip
- 【微信小程序源码】极简天气.zip
- 【微信小程序源码】记录宝宝喂奶.zip
- 【微信小程序源码】急救应急处理.zip
- 【微信小程序源码】集思笑话,含Vue.js后端,点赞.zip
- 【微信小程序源码】记账统计.zip


