Vue3中设置全局对象

1
2
3
4
5
6
7
app.config.globalProperties.foo = 'bar'

app.component('child-component', {
mounted() {
console.log(this.foo) // 'bar'
}
})

添加可以在应用程序内的任何组件实例中访问的全局 property。属性名冲突时,组件的 property 将具有优先权。

这可以代替 Vue 2.x Vue.prototype 扩展:

1
2
3
4
5
6
// 之前(Vue 2.x)
Vue.prototype.$http = () => {}

// 之后(Vue 3.x)
const app = Vue.createApp({})
app.config.globalProperties.$http = () => {}

官方文档:https://www.vue3js.cn/docs/zh/api/application-config.html#globalproperties

值得注意的是:而在3.0的settup中是没有this的!!!

1
2
3
4
5
6
7
8
import { getCurrentInstance,onBeforeMount} from 'vue';
setup (props,context) {
const { ctx } = getCurrentInstance();
onBeforeMount(()=>{
ctx.$http.get('/getData').then().catch(err => {console.log(err)})
});
.......
}

JavaJVM-String.intern()的理解,面试题

String基本特性

不可变性,一旦创建了一个String字符串将不可改变当前对象的内容.

对字符串的修改是,将在内存中重新分配一块空间

String的内存分配

字符串常量在字符串常量表中

通过new 产生一个字符串对象时 将在堆空间new一个String对象

String基本操作

……

字符串拼接操作

在创建一个字符串对象时,底层将会产生两个对象

在堆中的String,和字符串常量表中的. 实现在字符串常量表中创建常量

字符串在拼接时,

# intern() 的理解

判断字符串常量表中是否存在当前常量.

如果有则返回目标地址,如果没有则在常量表中创建一个常量 并返回地址

JDK6 和 JDK7/8… 对intern() 的底层处理有着略微的差异.

JDK6 执行intern是当发现常量表中没有目标常量时.会在常量表中创建一个新的字符串

而在JDK7/8…中会将当前对象的地址存放到常量表中 常量表中和当前对象指向同一个地址 使用== 结果为true

mybatisplus自定义结果映射实现一对多、多对一、多对多

无意间找到了一个不错的决绝方法,通过修改结果映射

在学习MyBatisPlus 时,简单的查询非常简单,只需继承了相关类,就能够进行增删改。但是在实际运用时,对象之间的关系非常复杂,一对多、多对一、多对多。网上查询了大量资料都无法解决此问题。

难道要把所有的用Mybatis的重写一次?

重写一次Plus的方法还能不能用?

实在没办只能查看官网https://mp.baomidou.com/guide/

在注解处找到了可能的解决方案

img

@TableName注解可以设置对应的resultMap 看到这里我想是不是,在Mapper中设置好resultMap,map中使用association、或者collection就能解决了。结果是可以的,上图:

实体类

img

mapper

img

rest效果

img

来源:https://www.jianshu.com/p/9f085dd2c6c4

Vue-Axios跨域请求

在vue.config.js中配置

注:首选我们得先创建一个vue.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module.exports = {
devServer: {
open: true, //是否自动弹出浏览器页面
host: "localhost",
port: '8081',
https: false,
hotOnly: false,
// 配置代理实现跨域
proxy: {
'/api': {
target: 'http://localhost:8080', //API服务器的地址
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
},

}
}

请求实例:

这里用Springboot搭建了一个简易的接口:

image-20210206160358714

Vue 8081端口 实现跨域:

image-20210206160123890

image-20210206160147659

请求后:

image-20210206160157079

基本axios配置参数

1
2
3
4
5
6
7
8
9
10
axios配置参数:
baseURL 配置的域名
timeout:请求超时时长
url:请求路径
methods:请求方法 get/post/put/patch/delete
params: 请求参数拼接在url上
data:请求参数请求体中

优先级: axios请求配置 > axios实例配置 > axios全局配置
axios实例 axios.create() 返回的是一个promise对象

注意这个方式只能在开发环境中使用。!!!!

参考文章:https://blog.csdn.net/wh_xmy/article/details/87705840

HoBlog-简单个人博客后端系统

一个 Spring+Mybatis+SpringMvc 练手项目,博客后端

项目概述

一个简单的博客系统后端功能,博客该有的功能都差不多,大部分时间花在Dao层.

前后端分离开发,传送Json数据

部分功能待完善,前后端markdown编辑器的对接

采用JWT Token验证

功能列表:

image-20210130222242933

项目总结

image-20210130215109352

一个常规的目录结构

这个项目主要是练习SSM整合使用,之后将采用springboot重新开发

前边是手写Dao~太浪费时间了,后来发现可以通过 mybatis-generator 生成 再修改一下基本能用

动态Sql 结果的封装 主要是对于mybatis练习,service和controller层主要是对注解的使用复习

lombok 是个好东西,省了不少时间浪费在代码生成上

熟悉事物控制,和controller全局异常处理

# 项目地址

github:https://github.com/shiguangwl/HosBlog