- springboot+mybatisplus实现基本的增删改查以及分页查询。这里使用的是Restful风格包括简单描述Restful是什么
okchan666
springbootjava
先实现springboot+mybatisplus的增删改查接口使用postman测试:第一步创建项目导入依赖:直接给大家了:4.0.0org.springframework.bootspring-boot-starter-parent2.6.6com.okchanspringboot_07_ssmp0.0.1-SNAPSHOT1.8org.springframework.bootspring-b
- MyBatis-Plus 3.5.5的代码生成器 实践【完整代码】
qq_43513957
mybatis
MyBatis-Plus3.5.5的代码生成器实践【完整代码】1.表:要有一个version字段,乐观锁更新。配置拦截器的代码packagecom.example.demo.zmybatisplusGenerator.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.exte
- MyBatis Plus 实战详解
Aries263
redis分布式数据库
一、引言MyBatisPlus(简称MP)是MyBatis的增强工具,旨在简化开发、提高效率。它保留了MyBatis的强大功能,并在其基础上进行了扩展和优化,提供了强大的CRUD操作、配置选项、条件构造器等功能。本文将详细介绍MyBatisPlus的安装、配置、基本操作以及分页和条件查询的使用。二、安装与配置1.添加依赖首先,在Maven项目的pom.xml中添加MyBatisPlus的依赖。以下
- mybatis批量插入、mybatis-plus批量插入、mybatis实现insertList、mybatis自定义实现批量插入
五月天的尾巴
springbootmybatismybatis批量插入
文章目录一、mybatis新增批量插入1.1、引入依赖1.2、自定义通用批量插入Mapper1.3、把通用方法注册到mybatisplus注入器中1.4、实现InsertList类1.5、需要批量插入的dao层继承批量插入Mapper二、可能遇到的问题2.1、Invalidboundstatement众所周知,mybatisplus提供的BaseMapper里只有单条插入的方法,没有批量插入的方法
- [快速入门] 使用 MybatisPlus 简化 CRUD 操作
YuanDaima2048
工具使用后端学习javaspringbootspringcloudmavenmybatismybatisplus
文章总览:YuanDaiMa2048博客文章总览[快速入门]使用MybatisPlus简化CRUD操作在这个文章中,将介绍如何使用MybatisPlus来简化常见的CRUD(增删改查)操作。MybatisPlus是MyBatis的增强工具,提供了许多便利的功能,让我们能够更轻松地与数据库交互。下面将一步步介绍如何使用MybatisPlus完成基本的增删改查操作。(一)基本使用1.引入Mybatis
- mybatisplus查询指定字段
色空大师
javamybatisplus
使用mybatisplus查询指定字段实体类packagecom.test.entity;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableId;imp
- mybatisplus 通过自定义拦截器更改sql代码
CodeMaster_37714848
sqljava数据库mybatis
在MyBatis-Plus中,如果你需要通过拦截器来更改SQL代码,可以通过实现自定义的MyBatis拦截器插件来完成。MyBatis插件机制允许你在执行SQL语句之前或之后对SQL语句进行处理,包括修改SQL语句。下面是如何实现一个自定义的MyBatis拦截器插件来更改SQL代码的步骤。1.添加MyBatis-Plus和MyBatis依赖首先,确保你的项目中包含了MyBatis-Plus和MyB
- java版本ERP管理系统源码 Spring Cloud alibaba Spring Boot MybatisPlus Redis VUE3 ElementUI 微服务
m0_66404702
javaspringbootredisERP管理系统源码
在当今数字化浪潮的推动下,企业对于高效、稳定且易于扩展的管理系统需求日益增长。为了满足这一需求,我们精心打造了一款基于Java技术的鸿鹄ERP(EnterpriseResourcePlanning)管理系统。该系统充分利用了SpringCloudAlibaba、SpringBoot、MybatisPlus、Redis等先进技术栈,并结合前端框架VUE3和ElementUI,构建了一个功能丰富、性能
- 基于SSM源代码风格Java代码生成器 Maven版开箱即用 摸鱼神器
赛先生和泰先生
一、序言UCodeCms是一款Maven版的Java源代码生成器,是快速构建项目的利器。代码生成器模块属于可拆卸模块,即按需引入。代码生成器生成SSM(Spring、SpringBoot、MybatisPlus)风格的源代码。面试时经常提到面向对象编程,实际开发中常常是面向数据库编程,随着需求的快速变化,数据库的库表结构也需要相应变化,如何根据库表结构的变化,快速响应到源代码层次,是Java代码生
- 大厂高频面试题复习JAVA学习笔记-学习路线
addaduvyhup
java开发语言
对于应届生,要找到一份java工作,你得大概学会:java基础:javase、jvm、juc、gc、mysql、jdbc,计网计组Java微服务基础Maven→Gradle→Spring6→SpringMVC→MyBatis→MyBatisPlus→SSM->Redis7->SpringBoot2->SpringCloudjava微服务生态:Git-Docker-Elasticsearch→Zoo
- (报错记录)mybatis整合mybatis-plus错误org.apache.ibatis.binding.BindingException: Invalid bound statement
-茄-
java学习日记mybatisapachespring
org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound):com.mindskip.xzs.repository.SubjectMapper.pageatcom.baomidou.mybatisplus.core.override.PageMapperMethod$SqlCommand.(PageMappe
- MybatisPlus中@EnumValue注解介绍、应用场景和示例代码
小信丶
java持久层框架技术栈mybatisjava
@EnumValue注解详细介绍功能概述:@EnumValue注解标记在枚举类型的字段上,表示该字段是枚举值在数据库中存储的实际值。这对于枚举的持久化是关键,确保枚举在数据库中的表示与Java枚举类的一致性。主要用途:字段指定:指定枚举类中哪个字段将用于数据库存储。例如,如果一个枚举包含多个字段(如代码和描述),你可以使用@EnumValue指定哪个字段代表实际的存储值。数据转换:帮助Mybati
- SpringBoot多数据源配置
代码蒋
springbootjava
目录1SpringBoot分库配置1.1准备数据1.2springboot+mybatis使用分包方式整合1.2.1pom.xml1.2.2application.yml配置文件1.2.3连接数据源配置文件1.2.3.1连接源配置一1.2.3.2连接源配置二1.2.4项目结构1.3springboot+druid+mybatisplus使用注解整合1.3.1pom.xml1.3.2applicat
- 滚雪球学MyBatis-Plus(13):测试与部署
bug菌¹
零基础入门教学mybatis-plus测试部署
前言在上期内容中,我们深入探讨了MyBatisPlus的高级功能,包括自定义SQL注解、批量操作以及数据加密与解密。这些功能极大地提高了开发效率,并增强了数据操作的灵活性和安全性。本期内容将重点介绍MyBatisPlus的测试与部署。我们将学习如何编写单元测试和集成测试,确保代码的正确性和可靠性。然后,我们将讨论项目的打包与部署流程,帮助你将开发的应用程序顺利发布到生产环境中。一、测试概述测试是软
- 基于Spring和MybatisPlus下的Oracle转mysql语句语法适配修改
星月梦瑾
java数据库数据库oracle
本文讲述了在Spring+MybatisPlus环境中,oracle数据库转为mysql后查询语法和代码的主要修改。一、insert语句Oracle的主键采用序列,mysql有自增主键,转成mysql后取消序列主键,取消id设置。Eg:oracle中 SELECTseq_factory_abnormal_approval.NEXTVALasidFROMDUAL
- mybatis-plus实现自动填充创建人/更新人以及时间字段
J不A秃V头A
Javamybatisjavamybatis-plus
1.通用实体类packagecom.sundark.mylife.entity;importcom.baomidou.mybatisplus.annotation.*;importlombok.Data;importlombok.experimental.Accessors;importjava.io.Serializable;importjava.time.LocalDateTime;/***@
- `lambdaQuery()` 和 `lambda()`
冰淇淋烤布蕾
java
在Java中,lambdaQuery()和lambda()是与Lambda表达式相关的查询方法,通常用于MyBatisPlus框架中。下面通过举例来解释它们的用法和区别。1.lambdaQuery()lambdaQuery()是MyBatisPlus框架中常用的方法,用于创建基于Lambda表达式的查询构造器。它的主要作用是帮助我们通过Lambda表达式来构建查询条件,避免了硬编码字段名称带来的风
- MybatisPlus 的入门与实践:IService接口 实现 CRUD,简化数据库操作
ZachOn1y
Mybatis-Plus数据库javamybatis后端java-ee
引言在MybatisPlus框架中,IService接口扮演着重要的角色。作为一个通用的服务接口,IService定义了一系列数据库操作方法,包括查询、插入、更新、删除等。这些方法的定义使得在服务层进行数据库操作变得更为便捷和高效。IService概述MyBatis-Plus中有一个接口IService和其实现类ServiceImpl,封装了常见的业务层逻辑,详情查看源码IService和Serv
- SpringBoot MybatisPlus selectOne的坑
Dragon Wu
springbootmybatisspringboot后端springjava
目录一、问题二、问题解决三、其他方法一、问题selectOne在查询多条数据时会报错,查询语句并不会加limit1。Onerecordisexpected,butthequeryresultismultiplerecords。二、问题解决在QueryWrapper上添加如下:QueryWrapperqueryWrapper=newQueryWrapper<>();queryWrapper.eq(S
- 滚雪球学MyBatis-Plus(03):项目初始化
bug菌¹
项目初始化mybatis-plusjava零基础入门
前言在上期内容中,我们完成了MyBatisPlus项目的环境准备,包括安装JDK和Maven、创建MySQL数据库以及使用SpringInitializr生成项目骨架。这为后续开发打下了基础,使我们能够专注于实现具体功能。本期内容将继续深入,重点介绍如何初始化项目,包括创建Maven项目、添加MyBatisPlus依赖以及配置数据库连接。这些步骤将帮助你进一步理解MyBatisPlus的基本使用,
- 怎么使用Mybatisplus的分页插件来完成分页
努力学习的小宇同学
从0开始做一个前后端分离项目MybatisPlus分页插件Mybatisplus分页分页插件
前端使用的Elementui后端1.在配置里配置数据源spring:datasource:url:jdbc:mysql://localhost:3306/vueadmin?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTCusername:rootpassword:Qq702196driver-class-name:com.mysq
- Mybatis-plus-配置源
涵叔叔
mybatisjava开发语言
corepackagecom.mobin.config;importcn.hutool.core.net.NetUtil;importcom.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;importcom.baomidou.mybatisplus.core.incrementer.IdentifierGenera
- SpringBoot项目中mybatis执行sql很慢的排查改造过程(Interceptor插件、fetchSize、隐式转换等)
星月昭铭
javamybatisSpringBootspringbootmybatissqljava
刚入职公司,就发现公司项目跑sql特别慢,差不多一万条数据插入到数据库要5秒以上(没有听错,就是这个速度),查询修改删除也是特别慢。直到22年年底实在是受不了了,我就去排查了一下。用的是Oracle数据库,mybatis、mybatisplus,其中mybatis是引入的平台的依赖。平台封装了一些工具和插件。做个对照试验首先为了做对照试验,自己新建了一个SpringBoot项目T,里面引入了官方的
- MybatisPlus乐观锁插件
寰宇软件
java后端数据库mysql
意图当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式取出记录时,获取当前version更新时,带上这个version执行更新时,setversion=newVersionwhereversion=oldVersion如果version不对,就更新失败主要适用场景商品锁库存电子券领取等等乐观锁插件集成了MybatisPlus乐观锁插件,直接使用即可参考:https://mybatis
- Mybatis-plus实现分页查询
无名指的等待712
mybatis
importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept
- 数据权限的设计与实现系列3——MybatisPlus数据权限插件实现机制及使用示例
学海无涯,行者无疆
#数据权限数据权限数据权限设计数据权限插件Mybatisplus数据权限实现
背景上篇我们深度剖析了若依开发平台关于数据权限的设计与实现,并指出了其模式的局限性。今天我们来看一下MyBatisPlus提供的数据权限插件的实现机制与使用示例。官方说明:https://baomidou.com/plugins/data-permission/实现机制在SQL执行前拦截SQL语句,并根据用户权限动态添加权限相关的SQL片段。这样,只有用户有权限访问的数据才会被查询出来。拦截S
- MybatisPlus的LambdaQueryWrapper用法
筱顾大men
java数据库开发语言
LambdaQueryWrapper是MyBatis-Plus框架中的一个功能强大的查询构造器,它用于构建SQL查询条件,特别是针对Lambda表达式的支持,使得代码更加简洁、类型安全。在这个例子中,LambdaQueryWrapper被用来构建针对Tag实体类的查询条件。基本用法LambdaQueryWrapper允许你以链式调用的方式添加查询条件,每个条件方法都接受一个Lambda表达式,这个
- mybatisPlus LambdaQueryWrapper.select 报错避坑
MLJ.
javamybatisPlussqljavasqlmybatis数据库
mybatisPlus中LambdaQueryWrapper的select方法只能调用一次,如果调用第二次就会覆盖第一次比如,我有一个user表,我只想查询里面的id和name字段。错误示范:LambdaQueryWrapperwrapper=newLambdaQueryWrapperusers=subCompanyMapper.selectList(wrapper);这样子查询出来的users中
- 一种低版本mybatisPlus SQL注入攻击解决办法
浅度差文
sqljava数据库
对https://blog.csdn.net/qq_37148232/article/details/135238622?spm=1001.2014.3001.5501作了下升级。使用切面对入参作全面检查。以解决低版本mybatisPlus所带来的sql注入问题。publicclassIllegalSQLCheckExecutor{privatestaticJSONConfigjsonConfig
- MybatisPlus快速使用
锦衣当国
Java框架javamybatis
配置类(非必须)如果不涉及分页,无需配置https://baomidou.com/pages/2976a3/#spring-boot从上面网址粘贴下来代码即可packagecom.atguigu.ssyx.common.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.aut
- Algorithm
香水浓
javaAlgorithm
冒泡排序
public static void sort(Integer[] param) {
for (int i = param.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
int current = param[j];
int next = param[j + 1];
- mongoDB 复杂查询表达式
开窍的石头
mongodb
1:count
Pg: db.user.find().count();
统计多少条数据
2:不等于$ne
Pg: db.user.find({_id:{$ne:3}},{name:1,sex:1,_id:0});
查询id不等于3的数据。
3:大于$gt $gte(大于等于)
&n
- Jboss Java heap space异常解决方法, jboss OutOfMemoryError : PermGen space
0624chenhong
jvmjboss
转自
http://blog.csdn.net/zou274/article/details/5552630
解决办法:
window->preferences->java->installed jres->edit jre
把default vm arguments 的参数设为-Xms64m -Xmx512m
----------------
- 文件上传 下载 解析 相对路径
不懂事的小屁孩
文件上传
有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着,网上各种百度着。
下面总结一下遇到的问题:
文件上传,在页面上传的时候,不要想着去操作绝对路径,浏览器会对客户端的信息进行保护,避免用户信息收到攻击。
在上传图片,或者文件时,使用form表单来操作。
前台通过form表单传输一个流到后台,而不是ajax传递参数到后台,代码如下:
<form action=&
- 怎么实现qq空间批量点赞
换个号韩国红果果
qq
纯粹为了好玩!!
逻辑很简单
1 打开浏览器console;输入以下代码。
先上添加赞的代码
var tools={};
//添加所有赞
function init(){
document.body.scrollTop=10000;
setTimeout(function(){document.body.scrollTop=0;},2000);//加
- 判断是否为中文
灵静志远
中文
方法一:
public class Zhidao {
public static void main(String args[]) {
String s = "sdf灭礌 kjl d{';\fdsjlk是";
int n=0;
for(int i=0; i<s.length(); i++) {
n = (int)s.charAt(i);
if((
- 一个电话面试后总结
a-john
面试
今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。
面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:
在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。
然后对list和map分别举几个类型:
list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了
- MSSQL中Escape转义的使用
aijuans
MSSQL
IF OBJECT_ID('tempdb..#ABC') is not null
drop table tempdb..#ABC
create table #ABC
(
PATHNAME NVARCHAR(50)
)
insert into #ABC
SELECT N'/ABCDEFGHI'
UNION ALL SELECT N'/ABCDGAFGASASSDFA'
UNION ALL
- 一个简单的存储过程
asialee
mysql存储过程构造数据批量插入
今天要批量的生成一批测试数据,其中中间有部分数据是变化的,本来想写个程序来生成的,后来想到存储过程就可以搞定,所以随手写了一个,记录在此:
DELIMITER $$
DROP PROCEDURE IF EXISTS inse
- annot convert from HomeFragment_1 to Fragment
百合不是茶
android导包错误
创建了几个类继承Fragment, 需要将创建的类存储在ArrayList<Fragment>中; 出现不能将new 出来的对象放到队列中,原因很简单;
创建类时引入包是:import android.app.Fragment;
创建队列和对象时使用的包是:import android.support.v4.ap
- Weblogic10两种修改端口的方法
bijian1013
weblogic端口号配置管理config.xml
一.进入控制台进行修改 1.进入控制台: http://127.0.0.1:7001/console 2.展开左边树菜单 域结构->环境->服务器-->点击AdminServer(管理) &
- mysql 操作指令
征客丶
mysql
一、连接mysql
进入 mysql 的安装目录;
$ bin/mysql -p [host IP 如果是登录本地的mysql 可以不写 -p 直接 -u] -u [userName] -p
输入密码,回车,接连;
二、权限操作[如果你很了解mysql数据库后,你可以直接去修改系统表,然后用 mysql> flush privileges; 指令让权限生效]
1、赋权
mys
- 【Hive一】Hive入门
bit1129
hive
Hive安装与配置
Hive的运行需要依赖于Hadoop,因此需要首先安装Hadoop2.5.2,并且Hive的启动前需要首先启动Hadoop。
Hive安装和配置的步骤
1. 从如下地址下载Hive0.14.0
http://mirror.bit.edu.cn/apache/hive/
2.解压hive,在系统变
- ajax 三种提交请求的方法
BlueSkator
Ajaxjqery
1、ajax 提交请求
$.ajax({
type:"post",
url : "${ctx}/front/Hotel/getAllHotelByAjax.do",
dataType : "json",
success : function(result) {
try {
for(v
- mongodb开发环境下的搭建入门
braveCS
运维
linux下安装mongodb
1)官网下载mongodb-linux-x86_64-rhel62-3.0.4.gz
2)linux 解压
gzip -d mongodb-linux-x86_64-rhel62-3.0.4.gz;
mv mongodb-linux-x86_64-rhel62-3.0.4 mongodb-linux-x86_64-rhel62-
- 编程之美-最短摘要的生成
bylijinnan
java数据结构算法编程之美
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class ShortestAbstract {
/**
* 编程之美 最短摘要的生成
* 扫描过程始终保持一个[pBegin,pEnd]的range,初始化确保[pBegin,pEnd]的ran
- json数据解析及typeof
chengxuyuancsdn
jstypeofjson解析
// json格式
var people='{"authors": [{"firstName": "AAA","lastName": "BBB"},'
+' {"firstName": "CCC&
- 流程系统设计的层次和目标
comsci
设计模式数据结构sql框架脚本
流程系统设计的层次和目标
 
- RMAN List和report 命令
daizj
oraclelistreportrman
LIST 命令
使用RMAN LIST 命令显示有关资料档案库中记录的备份集、代理副本和映像副本的
信息。使用此命令可列出:
• RMAN 资料档案库中状态不是AVAILABLE 的备份和副本
• 可用的且可以用于还原操作的数据文件备份和副本
• 备份集和副本,其中包含指定数据文件列表或指定表空间的备份
• 包含指定名称或范围的所有归档日志备份的备份集和副本
• 由标记、完成时间、可
- 二叉树:红黑树
dieslrae
二叉树
红黑树是一种自平衡的二叉树,它的查找,插入,删除操作时间复杂度皆为O(logN),不会出现普通二叉搜索树在最差情况时时间复杂度会变为O(N)的问题.
红黑树必须遵循红黑规则,规则如下
1、每个节点不是红就是黑。 2、根总是黑的 &
- C语言homework3,7个小题目的代码
dcj3sjt126com
c
1、打印100以内的所有奇数。
# include <stdio.h>
int main(void)
{
int i;
for (i=1; i<=100; i++)
{
if (i%2 != 0)
printf("%d ", i);
}
return 0;
}
2、从键盘上输入10个整数,
- 自定义按钮, 图片在上, 文字在下, 居中显示
dcj3sjt126com
自定义
#import <UIKit/UIKit.h>
@interface MyButton : UIButton
-(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloa
- MySQL查询语句练习题,测试足够用了
flyvszhb
sqlmysql
http://blog.sina.com.cn/s/blog_767d65530101861c.html
1.创建student和score表
CREATE TABLE student (
id INT(10) NOT NULL UNIQUE PRIMARY KEY ,
name VARCHAR
- 转:MyBatis Generator 详解
happyqing
mybatis
MyBatis Generator 详解
http://blog.csdn.net/isea533/article/details/42102297
MyBatis Generator详解
http://git.oschina.net/free/Mybatis_Utils/blob/master/MybatisGeneator/MybatisGeneator.
- 让程序员少走弯路的14个忠告
jingjing0907
工作计划学习
无论是谁,在刚进入某个领域之时,有再大的雄心壮志也敌不过眼前的迷茫:不知道应该怎么做,不知道应该做什么。下面是一名软件开发人员所学到的经验,希望能对大家有所帮助
1.不要害怕在工作中学习。
只要有电脑,就可以通过电子阅读器阅读报纸和大多数书籍。如果你只是做好自己的本职工作以及分配的任务,那是学不到很多东西的。如果你盲目地要求更多的工作,也是不可能提升自己的。放
- nginx和NetScaler区别
流浪鱼
nginx
NetScaler是一个完整的包含操作系统和应用交付功能的产品,Nginx并不包含操作系统,在处理连接方面,需要依赖于操作系统,所以在并发连接数方面和防DoS攻击方面,Nginx不具备优势。
2.易用性方面差别也比较大。Nginx对管理员的水平要求比较高,参数比较多,不确定性给运营带来隐患。在NetScaler常见的配置如健康检查,HA等,在Nginx上的配置的实现相对复杂。
3.策略灵活度方
- 第11章 动画效果(下)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- FAQ - SAP BW BO roadmap
blueoxygen
BOBW
http://www.sdn.sap.com/irj/boc/business-objects-for-sap-faq
Besides, I care that how to integrate tightly.
By the way, for BW consultants, please just focus on Query Designer which i
- 关于java堆内存溢出的几种情况
tomcat_oracle
javajvmjdkthread
【情况一】:
java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: <jvm-arg>-Xms3062m</jvm-arg> <jvm-arg>-Xmx
- Manifest.permission_group权限组
阿尔萨斯
Permission
结构
继承关系
public static final class Manifest.permission_group extends Object
java.lang.Object
android. Manifest.permission_group 常量
ACCOUNTS 直接通过统计管理器访问管理的统计
COST_MONEY可以用来让用户花钱但不需要通过与他们直接牵涉的权限
D