SSM,SpringBoot相关知识盲区整理
- @ResponseBody详解
- ResponseEntity详解
- @ModelAttribute运用详解
- @RequestParam无法获取参数
- @RequestParam和@RequestBody的区别
- Spring常用注解(绝对经典)
- Spring中的Environment
- @Param注解的使用和解析
- JdbcType--指定当前javaBean属性对应数据库中的数据类型
- parameterType 用法
- @TableField注解可以起别名吗?
- MybatisPlus中@TableField注解的使用
- SpringBoot默认集成的Jackson框架,处理xml的还有xstream
- controller用pojo对象封装前端的请求参数---表单形式的请求
- @Value和@Bean注解的执行顺序问题
- @PropertySource和@Value一起使用,注入properties文件
-
- 高级用法
- @ImportResource()注解的使用
- 加载.properties配置文件的三种方式
- Mybatis-Plus事务管理
@ResponseBody详解
@ResponseBody详解
@RequestBody的使用
ResponseEntity详解
ResponseEntity的基本简介
@ModelAttribute运用详解
@ModelAttribute运用详解
@RequestParam无法获取参数
application/x-www-form-urlencoded是以表格的形式请求,而application/json则将数据序列化后才进行传递,如果使用了@RequestParam会在Content里面查找对应的数据,结果因为传递的数据已经被序列化所以不能找到,所以当要使用@RequestParam注解时候应当使用application/x-www-form-urlencoded,而如果想要使用application/json则应当使用@RequestBody获取被序列化的参数
@RequestParam和@RequestBody的区别
@RequestParam
① 支持POST和GET请求。
② 只支持Content-Type:为application/x-www-form-urlencoded编码的内容。Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)
@RequestBody
① 不支持GET请求。
② 必须要在请求头中申明content-Type(如application/json)springMvc通过HandlerAdapter配置的HttpMessageConverters解析httpEntity的数据,并绑定到相应的bean上。
@RequestParam和@RequestBody的区别
Spring常用注解(绝对经典)
笔记
Spring中的Environment
Spring中的Environment
@Param注解的使用和解析
作用:用注解来简化xml配置的时候(比如Mybatis的Mapper.xml中的sql参数引入),@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中(一般通过#{}的方式,${}会有sql注入的问题)。
当你使用了使用@Param注解来声明参数时,如果使用 #{} 或 ${} 的方式都可以,当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。
当参数传递map时,也可以直接使用${}取值
不使用@Param注解时,最好传递 Javabean。在SQL语句里就可以直接引用JavaBean的属性,而且只能引用JavaBean存在的属性。
Mapper接口方法:
public int getUsersDetail(User user);
对应Sql Mapper.xml文件:
<!--这里直接引用对象属性即可,不需要对象.属性的方式-->
<select id="getUserDetail" statementType="CALLABLE" resultMap="baseMap">
Exec WebApi_Get_CustomerList #{userid}
</select>
当参数传递的是javabean时,又存在@param注解时,必须使用对象.属性名的方式:
public int getUsersDetail(@param("u")User user);
对应Sql Mapper.xml文件:
<!--这里直接引用对象属性即可,不需要对象.属性的方式-->
<select id="getUserDetail" statementType="CALLABLE" resultMap="baseMap">
Exec WebApi_Get_CustomerList #{u.userid}
</select>
JdbcType–指定当前javaBean属性对应数据库中的数据类型
JdbcType
parameterType 用法
parameterType 用法
@TableField注解可以起别名吗?
别名效果 value属性
- 使用MP自动生成的方法时,可以用@TableField起别名
- 在xml写sql时,需要用as或者resultMap来转化
防止字段持久化 exist属性
使用exist属性可以控制类中属性在表中是都一定对应,如果有不存在于数据表的字段,建议都设成fasle
总结:
手写的sql都不能自动生成别名
Mybatis Plus自动生成的sql可以起别名
原文
MybatisPlus中@TableField注解的使用
MybatisPlus中@TableField注解的使用
SpringBoot默认集成的Jackson框架,处理xml的还有xstream
Jackson快速入门
Java-Jackson使用详解
controller用pojo对象封装前端的请求参数—表单形式的请求
//新增课程
@PostMapping("/addCourse")
public String addCourse(Course course)
{
System.out.println(course);
return "error";
}
@Data
@EqualsAndHashCode(callSuper = false)
public class Course extends Model<Course> {
private static final long serialVersionUID = 1L;
@TableField("courseName")
private String coursename;
@TableField("courseCoverPath")
private String coursecoverpath;
@TableField("courseVideoFilePath")
private String coursevideofilepath;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("courseVideotype")
private Integer coursevideotype;
@TableField("courseVideoTime")
private Integer coursevideotime;
@TableField("type")
private String type;
@Override
protected Serializable pkVal() {
return this.id;
}
}
如果请求参数名,在pojo对象中找到了相同的属性名,则进行赋值,否则为null
@Value和@Bean注解的执行顺序问题
@Value和@Bean注解的执行顺序问题
@Value和@Bean注解不在同一文件下时,@Value先执行
在同一文件下时,@Bean先执行
@PropertySource和@Value一起使用,注入properties文件
- 文件路径
- 文件内容
- 新建config文件
高级用法
使用@Value和@PropertySource注入外部资源
@Configuration
@ComponentScan("com.example.value.service") //扫包
@PropertySource("classpath:test.properties") //注意文件格式的指定
public class ElConfig {
@Value("I Love You!") //1 注入普通字符串
private String normal;
@Value("#{systemProperties['os.name']}") //2 注入操作系统属性
private String osName;
@Value("#{ T(java.lang.Math).random() * 100.0 }") //3 注入表达式结果
private double randomNumber;
@Value("#{demoService.another}") //4 注入其他Bean的属性
private String fromAnother;
@Value("classpath:test.txt") //5 注入了文件资源
private Resource testFile;
@Value("http://www.baidu.com") //6 注入网页资源
private Resource testUrl;
@Value("${book.name}") //7 注入classpath:test.properties中资源项,注意美元符号$
private String bookName;
@Autowired
private Environment environment; //7 属性也可以从environment中获取。
@Bean //7
public static PropertySourcesPlaceholderConfigurer propertyConfigure() {
return new PropertySourcesPlaceholderConfigurer();
}
public void outputResource() {
try {
System.out.println(normal);
System.out.println(osName);
System.out.println(randomNumber);
System.out.println(fromAnother);
System.out.println(IOUtils.toString(testFile.getInputStream()));
System.out.println(IOUtils.toString(testUrl.getInputStream()));
System.out.println(bookName);
System.out.println(environment.getProperty("book.author"));
System.out.println(environment.getProperty("book.school"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意:注入配置配件使用@PropertySource指定文件地址,若使用@Value注入,则要配置一个PropertySourcePlaceholderConfigure的Bean
@ImportResource()注解的使用
@ImportResource注解用于导入Spring的配置文件,让配置文件里面的内容生效;(就是以前写的springmvc.xml、applicationContext.xml)
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上。
注意!这个注解是放在主入口函数的类上,而不是测试类上
该注解标注在主配置类上,用于加载我们自己手写的spring相关的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dog1" class="com.yangzhenxu.firstspringboot.bean.Dog">
<property name="name" value="zhangxue"/>
<property name="age" value="27"/>
</bean>
</beans>
必须是spring格式的配置文件,否则也会报错
@ImportResource()注解的使用
加载.properties配置文件的三种方式
加载.properties配置文件的三种方式
Properties类,配置文件,文件路径
Mybatis-Plus事务管理
Mybatis-Plus事务管理