1小时的代码20+的BUG;做一个记录

MongDB
1;findbyid会自动查询id属性;不能传入判定条件
2;对应表名的实体类必须名称对应表名,如果表名中有_会自动转换为实体名中的大写
3;查询一个使用findone
4;映射的实体类的参数名必须和表中列名对应
5;实体类的DB唯一id使用ObjectId,并且用@Id进行注解;Object的包为MongoDb提供;需要导入MGDB依赖;
6;实体类需要使用
@Document(collection = “recommend_user”)指定映射的数据库对应表名
@Document(collection = “quanzi_time_line_{userId}”)通过这个方式可以在注解条件中动态的添加参数;这是一个占位符;会在进行查询的时候动态的从属性中获取参数进行赋值,达到动态查询不同数据表的功能;场景:一个用户一张表;比如时间线
7;需要导入Mongo的另一个包;spring的mongo支持坐标
8;传入的参数必须对应表中的数据类型;以及实体类的数据类型

Redis
1:springboot在注入redisTemplate的时候必须制定泛型,现象表现为取出的是Object;查无数据;必须在后面指定泛型redisTemplate
Mave
1;引用其他包的时候用comlep会导致其只有编译时生效;运行时不生效
2;mybatus-pulus 需要提供的坐标有两个

<groupId>com.baomidougroupId>
<artifactId>mybatis-plusartifactId>
<version>3.1.1version>
--------
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.1.1version>

mybatis-plus
1;映射的实体类必须和表名对应-如果表有下划线需要配置前缀;
2;映射的实体类的参数名必须和表中列名对应;
3;实体类必须实现序列化接口 Serializable
4;实体类必须继承BaseMapper后续指定的泛型为这个接口对应的实体类;一张表-一个接口-一个实体类;一一对应
5;序列化时用户密码不要实现序列化;使用@JsonIgnore注解
6;设定一个beasPoJo添加两个属性对属性使用@TableField(fill = FieldFill.XXX)可以实现自
动添加时间
7;必须在需要扫描的mapper类上面注解@mapper;也可以直接在启动类上面直接注解扫描包@MapperScan
8;创造IDUS条件时给出的字段必须对应表中字段名,这个并不会自动映射,需要完全匹配

dubbo
1;配置出来的消费者可以连接到zookeeper;断开的时候提示断开;用ui界面工具可以看到bubbo服务成功注册,但是无法调用;
原因:
······1;配置客户端的时候客户端名称必须是zkclient
······2;服务发布者的扫描包一定要扫描正确
······3;APP名不能冲突
······4;记得不要用错包;使用alibba的包
```````5;.NullPointerExceptionlocationapi;扫描包的位置一定要配置到位;可以加大扫包范围;


zookeeper服务提供者配置
spring.application.name = itcast-tanhua-dubbo-server
server.port = 18083
dubbo.scan.basePackages = com.tanhua.dubbo.api
dubbo.application.name = dubbo-provider-tanhua
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880

dubbo.registry.address = zookeeper://host/post
dubbo.registry.client = zkclient
dubbo.registry.timeout = 10000
-------------------------------------
zookeeper消费者配置
spring.application.name = itcast-tanhua-service
server.port = 18081

dubbo.application.name = itcast-tanhua-server
dubbo.registry.address = zookeeper://host/post
dubbo.registry.client = zkclient
dubbo.registry.timeout = 60000
dubbo.consumer.timeout = 60000

基础知识;
1:duble转换为Integer时使用(Integer)直接转换;不能直接转换为包装类;
需要先转换为String去除尾数以后再IntegerValue.of进行转换;
2;从请求头获取token-@RequestHeader String Authorization
接收的参数名必须是Authorization
同理其他请求头数据获取也一样,至于你要用什么类型来接String 和Authorization都行
3;警惕动态空指针;;有时候一个对象集合中,可能头几个不报空指针,后续的对象就有空指针,要么你就debug点到底,别半路退出;
4;Missing Servlet Request Parameter Exception : Required Integer parameter 'page' is not present错误
有时候前端给参数的时候并不会指定页码,而有的时候又会给;很皮!所以我们取参数的时候要指定一个默认值给;不单单这个,但凡可能会没有数值的地方都可以在取值注解后面配置一个默认值给他;@PathVariable(value = “id”)-------GET
5;前端如果键值对的方式Post传输参数;可以用Map集合接收;shiyong@ReqeustBody接收-----------POST

@RequestParam(defaultValue = "1") Integer page;这个是从路径的?page=XXX获取参数;
@PathVariable(value = "id")这个是从路径上获取参;id为我们在映射路径上填写的占位符;

你可能感兴趣的:(笔记,java)