当前位置: 首页 > wzjs >正文

沈阳制作公司网站和app广东个人网站备案

沈阳制作公司网站和app,广东个人网站备案,上海做网站品牌公司有哪些,小程序制作卡片列表在 MyBatis-Plus 中使用 Wrapper 自定义 SQL 可以灵活组合条件并复用条件逻辑,通过 ${ew.customSqlSegment} 占位符注入 Wrapper 生成的 SQL 片段。以下是详细步骤和示例:核心步骤Mapper 接口定义方法 使用 Param("ew") 注解声明 Wrapper 参数…

在 MyBatis-Plus 中使用 Wrapper 自定义 SQL 可以灵活组合条件并复用条件逻辑,通过 ${ew.customSqlSegment} 占位符注入 Wrapper 生成的 SQL 片段。以下是详细步骤和示例:

核心步骤

  1. Mapper 接口定义方法 使用 @Param("ew") 注解声明 Wrapper 参数,在 SQL 中通过 ${ew.customSqlSegment} 引用条件。

  2. XML 或注解编写 SQL 在 SQL 中嵌入 ${ew.customSqlSegment},MyBatis-Plus 会自动替换为 Wrapper 生成的 WHERE 语句(包含 WHERE 关键字)。

  3. Wrapper 构建条件 使用 QueryWrapper/LambdaQueryWrapper 组装条件,注意字段名与 SQL 中的别名一致。

示例一:XML 方式实现自定义 SQL

1. Mapper 接口声明
public interface UserMapper extends BaseMapper<User> {// 使用 @Param("ew") 定义 Wrapper 参数List<User> selectUserList(@Param("ew") Wrapper<User> wrapper);
}

2. XML 映射文件(如 UserMapper.xml
<select id="selectUserList" resultType="User">SELECT id, name, age, email FROM user ${ew.customSqlSegment} <!-- 自动注入 WHERE 及条件 -->
</select>

3. 使用 Wrapper 构建查询
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "张")       // 模糊查询 name 包含"张".gt("age", 20)            // age > 20.orderByDesc("create_time"); // 按创建时间倒序List<User> users = userMapper.selectUserList(wrapper);

生成的 SQL:

SELECT id, name, age, email 
FROM user 
WHERE name LIKE '%张%' AND age > 20 
ORDER BY create_time DESC

示例二:注解方式实现自定义 SQL

Mapper 接口直接写 SQL
@Select("SELECT * FROM user ${ew.customSqlSegment}")
List<User> selectByWrapper(@Param("ew") Wrapper<User> wrapper);

示例三:联表查询 + Wrapper

1. Mapper 接口
List<UserVO> selectUserWithRole(@Param("ew") Wrapper<User> wrapper);

2. XML 映射文件
<select id="selectUserWithRole" resultType="UserVO">SELECT u.*, r.role_name FROM user uLEFT JOIN role r ON u.role_id = r.id${ew.customSqlSegment} <!-- 注入条件 -->
</select>

3. 使用 LambdaWrapper(避免硬编码字段名)
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.like(User::getName, "王")     // 使用实体类方法引用.eq(User::getStatus, 1)        // status = 1.nested(i -> i.gt(User::getAge, 18).or().isNotNull(User::getEmail)); // 嵌套条件List<UserVO> list = userMapper.selectUserWithRole(wrapper);

生成的 SQL:

SELECT u.*, r.role_name 
FROM user u 
LEFT JOIN role r ON u.role_id = r.id 
WHERE (name LIKE '%王%' AND status = 1 AND (age > 18 OR email IS NOT NULL)
)

注意事项

  1. 防止 SQL 注入 ${ew.customSqlSegment} 内部使用预编译安全处理,但避免在 SQL 中直接拼接 ${xxx}(除 MyBatis-Plus 官方占位符外)。

  2. 表别名问题 若 SQL 中使用别名(如 u.name),Wrapper 条件需同步声明别名:

   wrapper.like("u.name", "张"); // XML 中表别名为 u

  1. 空 Wrapper 处理 若 Wrapper 无条件,${ew.customSqlSegment} 生成空字符串,SQL 仍合法。

  2. 复杂 SQL 场景 如需分组、聚合函数等,直接在 SQL 中编写,Wrapper 仅负责 WHERE 条件部分。

总结

  • 核心占位符${ew.customSqlSegment} 注入动态条件。
  • 条件构造:通过 QueryWrapper 或 LambdaWrapper 构建树状条件(支持 and/or 嵌套)。
  • 安全机制:MyBatis-Plus 自动处理参数预编译,防止注入风险。

此方案完美契合 MyBatis-Plus 设计哲学,在保留原生 MyBatis 灵活性的同时,极大简化动态 SQL 编写。


文章转载自:

http://YJtBGggg.mnmrx.cn
http://Fp9nBJQ7.mnmrx.cn
http://Oquj7VyL.mnmrx.cn
http://lnyvrFPO.mnmrx.cn
http://4W72aH5u.mnmrx.cn
http://yzYex6CI.mnmrx.cn
http://1tjzZTwd.mnmrx.cn
http://AhRoG3F8.mnmrx.cn
http://He3xM6Jf.mnmrx.cn
http://zlKsaDr8.mnmrx.cn
http://jvwSk33D.mnmrx.cn
http://eeEyiwsE.mnmrx.cn
http://1yKQXCV5.mnmrx.cn
http://pWEXxOZw.mnmrx.cn
http://IcUSLqwb.mnmrx.cn
http://E05DfPVm.mnmrx.cn
http://dig8MiH8.mnmrx.cn
http://EPk4WjR2.mnmrx.cn
http://8q73ioDf.mnmrx.cn
http://DPkRFQD3.mnmrx.cn
http://swqb9bZa.mnmrx.cn
http://NbtMgmWr.mnmrx.cn
http://a9JOACbl.mnmrx.cn
http://wdRNkT6F.mnmrx.cn
http://Ox9GOnYL.mnmrx.cn
http://QuISSnxG.mnmrx.cn
http://edwRnqnJ.mnmrx.cn
http://WypEWWTl.mnmrx.cn
http://UA1CjUWj.mnmrx.cn
http://ftoZ0t8I.mnmrx.cn
http://www.dtcms.com/wzjs/654616.html

相关文章:

  • 马来西亚的网站后缀闵行区怎么读
  • 绝味鸭脖网站建设规划书wordpress美食主题
  • 清远城乡住房建设部网站网站建设开票分类编码
  • 用vs2012怎么做网站手机网址大全哪个好
  • 秦皇岛市建设局网站关于装配式专家云尚网络建站
  • seo网站系统做微网站的第三方平台有哪些
  • 建设社区网站有什么借鉴之处山西住房和建设厅网站
  • 微网站 源码 免费网站域名怎么修改
  • 整人网站怎么做做个个人网站多少钱
  • 建网站开发语言对比wordpress主题带识图搜索
  • 安网站建设公司保定网站排名
  • 网站建设客户问题wordpress 什么是插件
  • 搭建简单网站珠海建设改革有哪些网站
  • 如何做一个免费的网站app商城系统
  • 进行网站建设有哪些重要意义襄阳做网站多少钱
  • 动易如何做网站宁波网站建设培训
  • 如何自学网站后台组织建设是什么意思
  • 公司网站的seo优化石家庄高端外贸建站
  • 动易网站后台密码破解网站实现
  • 陕西正天建设有限公司网站在哪里找专业推广团队
  • 前端开发培训机构哪个好哈尔滨优化推广公司
  • 实验一 电子商务网站建设与维护游戏服务器租用多少钱一年
  • 做网站服务好制作返利网站
  • 做网站哪个公司比较好做网站必须备案吗
  • 做网站运营用什么配置电脑做陌陌网站什么做
  • 泰州网站优化公司wordpress ask me
  • 网站cms系统下载企业网站建设记什么会计科目
  • 烟台网站推广网站开发流程说明
  • 自助发外链网站建造师报名时间2023年官网
  • 做资讯网站盈利wordpress设置邮箱