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

做网站需要一些什么工具电商培训

做网站需要一些什么工具,电商培训,网站添加百度统计代码吗,长春网站设计公司在Spring Boot和MyBatis中,实现动态更新不固定字段的步骤如下: 方法一:使用MyBatis动态SQL(适合字段允许为null的场景) 定义实体类 包含所有可能被更新的字段。 Mapper接口 定义更新方法,参数为实体对象&…

在Spring Boot和MyBatis中,实现动态更新不固定字段的步骤如下:

方法一:使用MyBatis动态SQL(适合字段允许为null的场景)

  1. 定义实体类
    包含所有可能被更新的字段。

  2. Mapper接口
    定义更新方法,参数为实体对象:

    java

    void updateUserSelective(User user);
  3. XML映射文件
    使用<set><if>动态生成SQL:

    xml

    <update id="updateUserSelective" parameterType="User">UPDATE user<set><if test="name != null">name = #{name},</if><if test="age != null">age = #{age},</if><if test="address != null">address = #{address},</if><if test="phone != null">phone = #{phone},</if></set>WHERE id = #{id}
    </update>

注意:此方法无法将字段更新为null,因为参数为null时条件不成立。


方法二:使用Map和字段过滤(支持字段更新为null)

  1. Service层过滤字段
    在Service中定义允许更新的字段,并过滤请求参数:

    java

    public void updateUser(Long id, Map<String, Object> updates) {Set<String> allowedFields = Set.of("name", "age", "address", "phone");updates.keySet().retainAll(allowedFields); // 过滤非法字段userMapper.updateUserSelective(id, updates);
    }
  2. Mapper接口
    使用Map接收动态字段:

    java

    void updateUserSelective(@Param("id") Long id, @Param("updates") Map<String, Object> updates);
  3. XML映射文件
    动态生成更新语句:

    xml

    <update id="updateUserSelective">UPDATE user<set><foreach collection="updates" index="key" item="value" separator=",">${key} = #{value}</foreach></set>WHERE id = #{id}
    </update>

注意:使用${key}存在SQL注入风险,需在Service层严格过滤字段名。


方法三:使用@UpdateProvider(灵活且安全)

  1. 定义SQL提供类
    动态构建安全SQL:

    java

    public class UserSqlProvider {public String updateSelective(Map<String, Object> params) {Long id = (Long) params.get("id");Map<String, Object> updates = (Map<String, Object>) params.get("updates");Set<String> allowedFields = Set.of("name", "age", "address", "phone");StringBuilder sql = new StringBuilder("UPDATE user SET ");allowedFields.forEach(field -> {if (updates.containsKey(field)) {sql.append(field).append(" = #{updates.").append(field).append("}, ");}});sql.setLength(sql.length() - 2); // 移除末尾逗号sql.append(" WHERE id = #{id}");return sql.toString();}
    }
  2. Mapper接口
    使用@UpdateProvider注解:

    java

    @UpdateProvider(type = UserSqlProvider.class, method = "updateSelective")
    void updateUserSelective(@Param("id") Long id, @Param("updates") Map<String, Object> updates);

优点:避免SQL注入,动态生成安全语句。


总结

  • 方法一适合简单场景,字段无需设置为null

  • 方法二灵活,需严格过滤字段。

  • 方法三推荐用于生产环境,安全且维护性强。

根据需求选择合适方案,确保字段更新的灵活性和安全性。

http://www.dtcms.com/wzjs/285866.html

相关文章:

  • 站长工具 忘忧草安卓优化大师下载安装到手机
  • 青岛制作网站软件郑州seo关键词自然排名工具
  • 咋把网站制作成软件seo优化视频教程
  • 114做网站适合35岁女人的培训班
  • 书店网站的建设seo网站优化方
  • 泰州学习网站建设北京seo网站设计
  • 网站图标psdseo培训机构排名
  • 提供商城网站建设媒体:多地新增感染趋势回落
  • 全网营销型网站模版互联网营销公司
  • 宁波网站建设公司制作网站百度快照优化排名
  • 宝安网站开发引流用什么话术更吸引人
  • 网站做推广的团队软文写作技巧
  • seo怎么优化网站黄页网站推广app咋做广告
  • 权威网站设计互联网优化
  • 乌鲁木齐做网站公司哪家好seo综合查询软件排名
  • 如何做一个购物网站网站访问量排行榜
  • 网站如何做双语言传统营销和网络营销的区别
  • 郑州做商城网站白银网站seo
  • 江西城乡建设部网站首页武汉好的seo优化网
  • 织梦电影网站源码网站搭建的流程
  • 做公司网站的目的是什么关键词排名seo优化
  • wordpress创建新页面福建百度seo排名点击软件
  • 移动端网站如何做导出功能吗seo排名优化app
  • 嘉兴企业自助建站上海百度首页优化
  • 广州电子商务网站建设 v网络推广公司经营范围
  • 石家庄网站设计建设免费入驻的电商平台
  • 公司网站忘了怎么做企业网站设计欣赏
  • 网站制作中文版推广点击器
  • 网络优化与维护是做什么西安seo整站优化
  • 深圳企业建站设计公司成都网站快速排名软件