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

如今做那个网站能致富全网营销推广方案外包

如今做那个网站能致富,全网营销推广方案外包,个人网站怎么命名,微信商户平台开发MyBatis 动态 SQL 完整笔记 一、核心动态 SQL 标签与用法 1. 条件控制类标签 <if>&#xff1a;基础条件判断 示例&#xff1a;根据 name 和 age 动态筛选用户 <if test"name ! null and name ! ">AND user_name #{name} </if><choose>/<…

MyBatis 动态 SQL 完整笔记


一、核心动态 SQL 标签与用法

1. 条件控制类标签

  • <if>:基础条件判断
    示例:根据 nameage 动态筛选用户

    <if test="name != null and name != ''">AND user_name = #{name}
    </if>
    
  • <choose>/<when>/<otherwise>:多条件分支
    示例:类似 Java 的 switch-case,优先匹配首个满足条件的 <when>

    <choose><when test="type == 'admin'">AND role = 'admin'</when><otherwise>AND role = 'guest'</otherwise>
    </choose>
    

2. 语法修正类标签

  • <where>:自动处理 WHERE 关键字和首条条件前的 AND/OR

    <where><if test="age != null">AND age = #{age}</if>
    </where>
    
  • <trim>:更灵活的语法修正(替代 <where><set>
    示例:自定义前缀/后缀及需删除的字符

    <trim prefix="WHERE" prefixOverrides="AND |OR"><if test="name != null">AND name=#{name}</if>
    </trim>
    
  • <set>:自动处理 UPDATE 语句的 SET 子句
    示例:动态更新字段并去除末尾逗号

    <set><if test="name != null">name=#{name},</if><if test="age != null">age=#{age}</if>
    </set>
    

3. 集合处理类标签

  • <foreach>:遍历集合(批量操作/IN 查询)

    <foreach collection="list" item="item" open="(" separator="," close=")">#{item.id}
    </foreach>
    
  • <bind>:预定义变量(优化模糊查询等场景)

    <bind name="namePattern" value="'%' + name + '%'"/>
    WHERE username LIKE #{namePattern}
    

二、性能优化与最佳实践

1. OGNL 表达式优化

  • 避免复杂嵌套表达式,优先在 Java 层处理判断逻辑
    <if test="@com.utils.MyBatisUtils@isValid(name)">
    

2. 批量操作优化

  • 使用 BATCH 模式执行 SqlSession,减少数据库连接开销
  • 分批次处理超大数据集(如每 1000 条提交一次)

3. 缓存策略

  • 二级缓存配置(Mapper 级别,跨会话共享)
    <mapper namespace="com.UserMapper"><cache eviction="LRU" flushInterval="60000"/>
    </mapper>
    
  • 注意脏读问题:更新操作后手动清除缓存
    <update id="updateUser" flushCache="true">
    

三、高频场景实战示例

1. 动态排序与分页

<select id="selectUsers" resultMap="UserResultMap">SELECT * FROM users<where><if test="orderBy != null">ORDER BY ${orderBy} <!-- 注意 SQL 注入风险 --></if><if test="offset >=0 and limit >0">LIMIT #{offset}, #{limit}</if></where>
</select>

2. 多字段模糊查询

<bind name="searchKey" value="'%' + key + '%'"/>
<where>(title LIKE #{searchKey} OR content LIKE #{searchKey})
</where>

3. 批量插入优化

<insert id="batchInsert">INSERT INTO users (name, age) VALUES<foreach collection="list" item="user" separator=",">(#{user.name}, #{user.age})</foreach>ON DUPLICATE KEY UPDATE age=VALUES(age)
</insert>

四、安全与规范

1. 防 SQL 注入

  • 禁止直接拼接 ${} 参数(除非绝对可信)
  • 使用 #{} 预编译参数化查询

2. 参数校验

  • 集合判空:<if test="list != null and !list.isEmpty()">
  • 字符串处理:<if test="name != null and name.trim() != ''">

3. 类型安全

  • 显式声明 jdbcType(避免 NULL 类型推断错误)
    #{age,jdbcType=INTEGER}
    

五、高级特性

1. 注解动态 SQL

@SelectProvider(type = UserSqlBuilder.class, method = "buildQuery")
List<User> findUsers(UserQuery query);

2. 动态表名映射

<select id="selectByTable" resultType="map">SELECT * FROM ${tableName}
</select>

最佳实践总结

  1. 优先使用 <where>/<set> 替代手动处理 SQL 语法
  2. 复杂条件判断应前移至 Java 代码处理
  3. 批量操作需配合数据库连接池优化
  4. 高频读场景启用二级缓存,但注意数据一致性
  5. 使用 <bind> 统一处理格式转换(如日期/模糊查询)
http://www.dtcms.com/wzjs/357760.html

相关文章:

  • 潘家园做网站公司cpv广告联盟
  • 怎么建设咨询网站网站百度收录批量查询
  • 网站蜘蛛爬行统计简述网络营销的含义
  • 百度竞价排名广告定价鲜花seo标签优化
  • 龙华新区城市建设局网站揭阳新站seo方案
  • 广州购网站建设刷关键词排名系统
  • 南昌网站设计公司郑州网
  • 网站建设开发方式包括哪些搜关键词网站
  • 安阳360网站推广工具舆情分析
  • 服务器怎么发布网站网络营销课程设计
  • wordpress播放上传视频seo软件哪个好
  • 怎样快速仿做网站怎么做网站链接
  • 东莞高端做网站公司千万不要做手游推广员
  • 正规做网站公司学企业管理培训班
  • MIUI官方网站开发版百度关键词搜索指数
  • 自己如何做网站推广企业网站的网络营销功能
  • 网站内链建设锚文字建设网络营销渠道有哪几种
  • 校园淘宝店网站开发在线seo关键词排名优化
  • 系统的网站建设教程市场推广方案怎么做
  • 织梦网站seo信息发布网站有哪些
  • 网站建设公司怎样拓展网站业务网站seo推广多少钱
  • 网站网络推广如何制作一个网页链接
  • 如何建设类似大众点评网站学生网页设计模板
  • 免费空间测试网站营销网站的建造步骤
  • 洛阳做网站的公司seo做的比较好的公司
  • 广东网站建设费用如何打百度人工电话
  • 网站建设提成湖南优化公司
  • 玉林做网站优化推广seo搜索优化推广
  • 测网站打开的速度的网址如何在各大网站发布信息
  • 高校门户网站建设问题网站推广方式有哪些