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

做网站公司需要帮客户承担广告法吗中型网站建设

做网站公司需要帮客户承担广告法吗,中型网站建设,网站建设成本报表,个人空间网站建设目录 前言1. 基本知识2. 注意事项3. 拓展 前言 以往的Java基本知识推荐阅读#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等#xff08;超全#xff09;【Java项目】实战CRUD的功能整理#xff08;持续更新#xff09;Mybatis从入门到精通#xf… 目录 前言1. 基本知识2. 注意事项3. 拓展 前言 以往的Java基本知识推荐阅读 java框架 零基础从入门到精通的学习路线 附开源项目面经等超全【Java项目】实战CRUD的功能整理持续更新Mybatis从入门到精通全MyBatis-plus从入门到精通全 1. 基本知识 在MyBatis中动态SQL是一种强大的功能允许在select, insert, update, delete 等标签中根据条件动态构建SQL语句 这种动态性可以简化数据库查询的复杂度避免硬编码查询逻辑 MyBatis 提供了几种常用的动态 SQL 标签用来处理条件判断、循环和字符串拼接等操作 if标签根据给定的条件动态拼接SQL select idfindUsers resultTypeUserSELECT * FROM userswhereif testname ! nullAND name #{name}/ifif testage ! nullAND age #{age}/if/where /selectchoose, when, otherwise标签类似于Java中的switch语句允许你在多个条件中选择一个来执行 select idfindUsersByStatus resultTypeUserSELECT * FROM userswherechoosewhen teststatus ! nullAND status #{status}/whenotherwiseAND status active/otherwise/choose/where /selectforeach标签用于处理循环一般用来遍历集合构建IN查询等 select idfindUsersByIds resultTypeUserSELECT * FROM usersWHERE id INforeach itemid collectionlist open( separator, close)#{id}/foreach /selecttrim, where, set标签 trim去掉拼接后多余的前后缀where自动在拼接后的条件前加WHERE并去除多余的ANDset主要用于UPDATE语句自动去掉多余的逗号 update idupdateUserUPDATE userssetif testname ! nullname #{name},/ifif testage ! nullage #{age},/if/setWHERE id #{id} /update2. 注意事项 使用此种方式需要注意动态SQL带来的OOM风险 在复杂动态SQL的构建中特别是当涉及大批量数据或复杂拼接时容易导致内存溢出OOM问题 尤其是在foreach中处理大量数据时如果不加以控制可能会占用大量内存 假设有一个非常大的List例如数百万条数据 如果在MyBatis中直接使用foreach将整个列表插入或作为查询条件这会导致内存问题 select idfindLargeUsersByIds resultTypeUserSELECT * FROM usersWHERE id INforeach itemid collectionlist open( separator, close)#{id}/foreach /select在这种情况下MyBatis会尝试将数百万个id拼接到一个SQL语句中导致内存占用过高最终导致OOM 规避OOM的方法 分页处理可以将大批量数据分段处理例如在代码中将list切分为较小的块 ListListInteger partitionedIds Lists.partition(largeIdsList, 1000); for (ListInteger idsBatch : partitionedIds) {userMapper.findLargeUsersByIds(idsBatch); }避免过大的IN查询IN查询是常见的OOM来源可以通过数据库表连接等方式优化查询。 懒加载通过懒加载策略避免一次性加载过多数据到内存中 3. 拓展 在Java代码中进行参数校验是一种很好的实践尤其是在使用动态SQL时如果不校验传入的参数可能会导致意外的SQL拼接从而带来性能问题或安全隐患 基本的注解校验 public class User {NotNull(message Name cannot be null)private String name;Min(value 18, message Age should not be less than 18)private Integer age; }在使用这些注解后如果传入的参数不符合条件就会抛出ConstraintViolationException 结合Spring的Valid注解可以自动在控制层或服务层进行参数校验 PostMapping(/createUser) public ResponseEntity? createUser(Valid RequestBody User user, BindingResult result) {if (result.hasErrors()) {return new ResponseEntity(result.getAllErrors(), HttpStatus.BAD_REQUEST);}userService.createUser(user);return ResponseEntity.ok(User created successfully); }自定义校验逻辑有时内置的注解不够可以自定义校验注解 例如限制用户名长度或格式 Target({ElementType.FIELD}) Retention(RetentionPolicy.RUNTIME) Constraint(validatedBy UsernameValidator.class) public interface ValidUsername {String message() default Invalid username;Class?[] groups() default {};Class? extends Payload[] payload() default {}; }public class UsernameValidator implements ConstraintValidatorValidUsername, String {public void initialize(ValidUsername constraint) {}public boolean isValid(String username, ConstraintValidatorContext context) {return username ! null username.matches(^[a-zA-Z0-9]$);} }总的来说 MyBatis中的动态SQL功能非常灵活但也存在潜在的性能和内存问题 在复杂查询中务必小心处理大量数据操作合理运用分页、懒加载等技术 在Java代码层面通过参数校验来确保数据的安全和正确性是防止问题发生的关键步骤
http://www.zqtcl.cn/news/488975/

相关文章:

  • 自己做的网站怎么加入微信支付综合性门户网站列举
  • 哪个网站 可以做快递单录入网站怎么做抽奖
  • 网站设计培训班网站域名费用怎么做分录
  • 济南做网站哪里好惠州附近公司做网站建设多少钱
  • 使用oss做静态网站网站广告牌制作教程
  • 外贸看的英文网站公众号模板编辑器
  • 做网站的数据库的步骤阅读网站模板下载
  • 建设网站要钱吗个人养老金制度是什么意思
  • 做h5的网站页面设计软文素材网站
  • 黄冈网站推广软件费用是多少手机网站弹出层插件有哪些
  • wordpress文章链接怎么改怎么优化关键词排名优化
  • 专业做包包的网站好产品网站做营销推广
  • 网站刚建好怎么做能让百度收录湖北黄石网站建设
  • 网站建设拾金手指下拉二一wordpress 插件破解
  • 天津做网站外包公司有哪些美橙互联网站
  • 石家庄网站建设蓝点办公室装修工程
  • 申请网站空间就是申请域名建设机械网站咨询
  • 做美食网站有哪些网站怎么做自响应
  • 衡水网站建设维护宝安官网网站建设比较好的
  • 网站建设的审批重庆建设工程信息网30系统
  • 泉州软件开发培训机构怎么做网站内部链接的优化
  • 网站定位是什么中国it外包公司排名
  • 洛阳微信平台网站建设网站成功案例分析
  • 网站建设在淘宝怎么分类深圳软件开发招聘信息
  • .net如何做网站个人网站的制作
  • 网站优化排名推广站长统计官方网站
  • 长沙wap网站建设wordpress 用户 函数
  • 淮安做网站的公司有哪些公司目前上海有几个区
  • 怎么做自动跳转网站建站之星 discuz
  • 网站建设开发合同范本页面设计有哪几种风格