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

孝感住房和城乡建设部网站网站开发公司上海

孝感住房和城乡建设部网站,网站开发公司上海,厦门加盟网站建设,电商网站设计网络服务一、数据安全保护 该功能为了保护数据库配置及数据安全#xff0c;在一定的程度上控制开发人员流动导致敏感信息泄露。 3.3.2 开始支持配置安全 YML 配置#xff1a; // 加密配置 mpw: 开头紧接加密内容#xff08; 非数据库配置专用 YML 中其它配置也是可以使用的 …一、数据安全保护  该功能为了保护数据库配置及数据安全在一定的程度上控制开发人员流动导致敏感信息泄露。 3.3.2 开始支持配置安全 YML 配置 // 加密配置 mpw: 开头紧接加密内容 非数据库配置专用 YML 中其它配置也是可以使用的 spring:datasource:url: mpw:qRhvCwF4GOqjessEB3Ga5okPuXXr96wcucn2Pev6Bf1oEMZ1gVpPPhdDmjQqoMpassword: mpw:Hzy5iliJbwDHhjLs1L0j6wusername: mpw:XbEgsyuYRXw7U7sBJjBpA密钥加密 // 生成 16 位随机 AES 密钥 String randomKey AES.generateRandomKey();// 随机密钥加密 String result AES.encrypt(data, randomKey);如何使用 // Jar 启动参数 idea 设置 Program arguments , 服务器可以设置为启动环境变量 --mpw.keyd1104d7c3b616f0b数据安全 字段加密解密(opens new window) 字段脱敏(opens new window) SQL 注入安全保护说明 Wrappers.query() // 开启自动检查 SQL 注入 .checkSqlInjection().orderByDesc(任意前端传入字段) ​ // 手动校验方式 SqlInjectionUtils.check(任意前端传入字段)注意 加密配置必须以 mpw: 字符串开头随机密钥请负责人妥善保管当然越少人知道越好。 二、批量操作 3.5.4 版本支持事务需要手动自行控制(默认false)注意autoCommit参数在Spring项目下是无效的,具体见SpringManagedTransactionFactory,在原生mybatis下可用执行返回值为批量处理结果,业务可根据返回值判断是否成功数据能否写入或更新取决于代码能否正确执行到flushStatements支持Spring与非Spring项目使用执行抛出异常为PersistenceExceptionsaveOrUpdate是个比较有争议的方法,个人建议批量操作保持为简单的新增或更新操作 1、类说明 1.1 MybatisBatch? 泛型为具体 实际数据类型sqlSessionFactory可通过容器获取,非Spring容器下可在自行初始化Mybatis时将上下文记录起来dataList为实际的批量数据处理 (非空) 1.2 MybatisBatch.Method? 实际为BatchMethod, 封装了框架内部操作方法简化调用. 泛型为 实际Mapper方法参数需要的类型mapperClass为具体的实际Mapper类 #BatchMethod? 泛型为 实际Mapper方法参数需要的类型statementId : 执行的MappedStatementparameterConvert: 参数类型转换处理器,当数据类型与实际mapper方法参数不一致时,可以通过类型转换器进行转换 2、使用说明 构建MybatisBatch (将数据与sqlSessionFactory绑定起来)构建MybatisBatch.Method (确定执行执行Mapper类方法)执行操作 (执行处理操作,将批量参数转换为实际mapper需要的参数) 3、返回值说明 ListBatchResult 执行返回每次按照执行MappedStatement sql分组返回的操作结果 注意 例如批量根据id更新: 假设10条数据, 5条更新一个字段 5条更新两个字段 , 那返回值就是容量为2的List, 里面各存储了五条记录更新情况 update table set c1 ? where id ? //只更新一个字段 update table set c1 ? , c2 ? where id ? // 只更新两个字段 mappedStatement: 执行的MappedStatement sql: 执行sql parameterObjects: 参数列表 updateCounts[]: 影响行数(与上面的parameterObjects数据一一对应) 4、使用示例 框架提供了一个MybatisBatchUtils进行静态方法调用. 4.1 execute 适用于insert,update,delete操作 示例一: 数据类型为实体 ListH2User userList Arrays.asList(new H2User(2000L, 测试), new H2User(2001L, 测试)); MybatisBatchH2User mybatisBatch new MybatisBatch(sqlSessionFactory, userList); MybatisBatch.MethodH2User method new MybatisBatch.Method(H2UserMapper.class); mybatisBatch.execute(method.insert());示例二: 数据类型为非实体 ListLong ids Arrays.asList(120000L, 120001L); MybatisBatchLong mybatisBatch new MybatisBatch(sqlSessionFactory, ids); MybatisBatch.MethodH2User method new MybatisBatch.Method(H2UserMapper.class); mybatisBatch.execute(method.insert(id - {// 将id转换为实体H2User h2User new H2User();h2User.setTestId(id);return h2User; }));示例三: 自定义方法插入(无注解) // mapper方法(方法参数无注解) Insert(insert into h2user(name,version) values( #{name}, #{version}) ) int myInsertWithoutParam(H2User user1);// 准备数据集合 ListH2User h2UserList new ArrayList(); for (int i 0; i 1000; i) {h2UserList.add(new H2User(myInsertWithoutParam i)); }MybatisBatchH2User mybatisBatch new MybatisBatch(sqlSessionFactory, h2UserList); MybatisBatch.MethodH2User method new MybatisBatch.Method(H2UserMapper.class); mybatisBatch.execute(method.get(myInsertWithoutParam));示例四: 自定义方法插入(注解) // 方法参数带注解 Insert(insert into h2user(name,version) values( #{user1.name}, #{user1.version}) ) int myInsertWithParam(Param(user1) H2User user1);// 准备数据集合 ListH2User h2UserList new ArrayList(); for (int i 0; i 1000; i) {h2UserList.add(new H2User(myInsertWithParam i)); }MybatisBatchH2User mybatisBatch new MybatisBatch(sqlSessionFactory, h2UserList); MybatisBatch.MethodH2User method new MybatisBatch.Method(H2UserMapper.class); mybatisBatch.execute(method.get(myInsertWithParam, (user) - {// 转换成mapper方法参数MapString, Object map new HashMap();map.put(user1, user);return map; }));4.2 saveOrUpdate 执行保存或更新 注意 重点注意跨sqlSession下缓存和数据感知问题 saveOrUpdate(BatchMethodT insertMethod, BiPredicateBatchSqlSession, T insertPredicate, BatchMethodT updateMethod) insertMethod: 指定insert操作处理insertPredicate: 指定insert操作处理条件 注意 注意这里的BatchSqlSession,使用这个进行查询操作会每次都执行一次flushStatements. 如果在一次处理中,如果有两条记录相同的数据,在跨sqlSession中会执行两次插入导致主键冲突,而共享sqlsesion下会执行一次插入和一次更新 updateMethod: 指定update操作处理 跨sqlSession Autowired private H2UserMapper userMapper;ListH2User h2UserList new ArrayList(); for (int i 0; i 100; i) {h2UserList.add(new H2User(Long.valueOf(40000 i), test i)); } MybatisBatch.MethodH2User mapperMethod new MybatisBatch.Method(H2UserMapper.class);new MybatisBatch(sqlSessionFactory,h2UserList).saveOrUpdate(mapperMethod.insert(), // 指定insert方法((sqlSession, h2User) - userMapper.selectById(h2User.getTestId()) null), //判断条件,引用另个mapper方法mapperMethod.updateById()); // 指定update方法共用sqlSession ListH2User h2UserList new ArrayList(); for (int i 0; i 100; i) {h2UserList.add(new H2User(Long.valueOf(50000 i), test i)); } MybatisBatch.MethodH2User mapperMethod new MybatisBatch.Method(H2UserMapper.class);new MybatisBatch(sqlSessionFactory,h2UserList).saveOrUpdate(mapperMethod.insert(), // 指定insert方法((sqlSession, h2User) - sqlSession.selectList(mapperMethod.get(selectById).getStatementId(), h2User.getTestId()).isEmpty()), //判断条件,共用sqlSessionmapperMethod.updateById()); // 指定update方法4.3 事务处理 Spring事务处理示例一 Autowired private TransactionTemplate transactionTemplate;transactionTemplate.execute((TransactionCallbackListBatchResult) status - {MybatisBatch.MethodH2User mapperMethod new MybatisBatch.Method(H2UserMapper.class);// 执行批量插入MybatisBatchUtils.execute(sqlSessionFactory, h2UserList, mapperMethod.insert());throw new RuntimeException(出错了); });
http://wiki.neutronadmin.com/news/22109/

相关文章:

  • 做壁画的网站拓者设计吧室内设计官网案例
  • 个人网站怎样申请耐看舒适的网页设计欣赏
  • 音乐建设网站网站充值平台怎么做的
  • 什么网站可以查建设用地规划许可证wordpress前端获取头像
  • ps如何做ppt模板下载网站专业装修别墅
  • 聊城做网站厉害的公司做旅行社网站多少钱
  • 线上推广方案ppt关键词优化seo费用
  • 莱芜网站建设哪里有女性门户网站织梦模板
  • wordpress 在线pdf河西网站建设优化seo
  • 最专业的网站建设公司哪家好天助网的网站
  • 广州建筑公司网站石狮seo
  • 买的网站模板怎么上传河北邢台房价多少钱一平方
  • 驻马店建设网站网页设计与制作论文2000字
  • 网站维护流程图wordpress pdf
  • 张家港百度网站推广网站优化哪个公司好
  • 人人设计网官方网站沈阳今天最新通知
  • 有什么专门做电子琴音乐的网站淘宝联盟优惠券网站建设
  • 网站建设标准合同书网站怎样设计网址
  • 网上做家教的网站如何进行网络营销
  • 怎么查网站建设时间公司企业网站建设教程
  • 做网站费用上海好的做网站的
  • 义乌制作网站开发本地wordpress后台很慢
  • 网站设计在线培训wordpress图片上传卡住
  • 网站备案过期赣州人事人才网
  • 做网站需要什么花费响应式网站建设代理
  • 易讯网络网站建设wordpress插件重写
  • 沧州网站运营网页设计师职业资格证书
  • 成都网站改版公司软件外包app
  • 网站建设与管理专业介绍wordpress数据库教程
  • 公司建设网站费用直接列支旅行社酒店分销平台