MVC绑定包装POJO,mapper模糊查询拼接问题,Junit无法使用解决

MVC绑定包装POJO

当客户端的请求参数比较复杂,需要多个对象中的信息时,使用包装POJO类型的数据绑定(就是一个POJO中包含另一个简单POJO)

public class Orders {
	private Integer ordersId;
	private User user;
	.....
}

前端:

<form action="${pageContext.request.contextPath }/find" method="post">
订单编号:<input type="text" name="ordersId"/><br>
所属用户:<input type="text" name="user.username"/><br>
<input type="submit" value="查询">

前端请求的参数名编写必须符合以下两种情况:
1.如果查询条件参数是包装类的直接基本属性,则参数名直接用对应的属性名
2.如果查询条件参数是包装类中的POJO的自属性,则参数名必须为【对象.属性】,其中对象要和包装POJO的对象属性名称一致,【属性】要和包装POJO中的对象子属性一致

@RequestMapping("/find")
	public String find(Orders orders,Model model) {...}

使用的POJO在这里体现

mapper模糊查询拼接问题

#{}为占位符相当于?
${}用来表示拼接sql的字符串,为不加解释的原样输出,(1+2=12)
模糊查询写作‘%c%’
当使用

<select id="findByName" parameterType="String" resultType="com.cp03.Cutomer">
		select * from t_customer where username like '%${value}%'
		</select>

进行查询时,只要添加值’ or ‘1’='1,就可以得到全结果
在这里插入图片描述
要防止sql注入问题,可以使用MySQL中的contact()函数进行字符串拼接。

select * from t_customer where username like concat('%',#{value},'%')

在这里插入图片描述

Junit无法使用解决

在import org.junit.Test和添加junit.jar之后仍然无法使用且出现以下的问题
在这里插入图片描述
解决方法:需要下载和添加hamcrest-core.jar

猜你喜欢

转载自blog.csdn.net/qq_41863865/article/details/89097389