5月12日
今天在做项目的过程中,学习到了一些mybatis的内容,
bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。比如:
-
<select id="selectBlogsLike" resultType="Blog">
-
<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
-
SELECT * FROM BLOG
-
WHERE title LIKE #{pattern}
</select>
同时一点点的学springboot
@RequestParam是传递参数的.
@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。
@RequestParam注解主要参数
value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上图中第一个参数如果不设置value=“page”,则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据
required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。
defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。
学习
@RequestParam接收对象类型
例子
实体类是People属性如下
private String name; //姓名
private int age; //年龄
private String sex; //性别
前台代码(拿JSP举例)
<input type="text" value="黑黑" name="name">
<input type="text" value="18" name="age">
<input type="text" value="男" name="sex">
后台代码
int addPeople(@RequestParam People people) {}
//这时候使用@RequestParam注解修饰参数 只要前台传的参数名称和people类中的属性名一致就可以自动封装进People实体类
加和不加@RequestParam参数有什么区别呢?
其实不加@RequestParam参数也没问题(此时的参数名称要和前台传过来的参数名称保持一致),也可以接收到前台传过来的参数,当前台没有传值时接收到的为null,只不过使用@RequestParam是为了用它里面的一些属性,比如默认值或required属性。
总结
- Post请求接收@RequestBody修饰的参数和@RequestParam修饰的参数,而Get请求则只能接收@RequestParam修饰的参数。
- 如果前端传的是Json类型的对象,后台就要使用@RequestBody修饰的实体类接收,如果是单个属性就使用@RequestParam修饰的变量或实体类接收