一:关于数据库
1.1 将表中的ID自动返回注入到对象ID中
一般情况下,Mpaper层下的接口方法中增删改的返回值均为影响的行数,一般成功为1,失败抛出异常,但是当有需求需要返回插入记录的id时,我们的做法是:
//实际上,没有办法返回ID,只能将ID放入回填到所传的参数对应对应的ID上:
@Insert(“INSERT INTO table1 (x1,x2)” +” VALUES (#{x1}, #{x2})”)
@Options(useGeneratedKeys=true, keyProperty=”id”, keyColumn=”id”)
int insertResId(PriceFeedBackDO priceFeedBackDO);
这样,在插入一条记录时,就可以将插入的记录的ID回填到传入的对象的对应的ID属性中了。
二:关于类型转换
2.1 json字符串转map
import com.alibaba.fastjson.JSONObject;
JSONObject jsonObject = JSONObject.parseObject(str);
Integer codeValue = jsonObject.getIntValue("code")
三:关于spring mvc三层
3.1 model层
1). java简单对象层
java简单对象层的定义可以分为DAO,VO以及DTO三种。
DAO:它所定义的每一个属性均对应于数据库表中的每一个字段;
VO:它是为了使用方便,往往需要封装我们需要使用的DAO中的部分重要属性;
DTO:它是为了向上层提供更好的处理数据,需要将数据做基本处理之后,封装到DTO对象中,作为一个中间数据转换对象。
- mapper层
1.在mapper层首先会有sql语句,其次,需要一个接口方法来为上层提供操作数据库的功能。当然还需要在该mapper接口上添加注解@Mapper和
@Component。对于sql语句的书写也有很多种,可以用@select(“select * from xx where xx”)的形式,除此之外,当然我们也可以通过使用@SelectProvider(type=classname.class,method=“methodname”)之后来写对应类中,对应的方法,来拼接实现sql语句。
2.在mapper层,有时我们需要在向数据库插入一条记录的时候同时返回其记录的ID,采用1中的返回就无法完成,因此,我们可以采用第一大节的1.1小节的关于数据库部分的对应内容。
- service层
3.2 controller层
1)关于传递参数
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
//在controller类上使用如下注解
@RestController
public class PriceController {
@Autowired
private IPriceService priceService;
@RequestMapping(value = "/applyPrice", method = RequestMethod.POST)
public RestResult applyPrice(HttpServletRequest request,
@RequestParam(value = "id", required = false, defaultValue = "0") Integer id,
@RequestParam(value = "price" Integer price;
...
}
//其中,required默认为true,表示为必传参数,如果不传,就会返回错误码。对于可传可不传的参数可以将该参数设置为false,此时,可以设置默认值。
2)关于controller层的测试
可以用postman根据IP+端口或者域名的形式来测试,如果需要用到cookie也可以在postman中添加。
四. 接口文档(xx/swagger-ui.html#!)
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@ApiOperation(value = "查询子常量")
@ApiImplicitParams(
{
@ApiImplicitParam(name = "category", value = "主常量类型,1:收车 2:场地 3:售车 4:其他", required = false, dataType = "Short", paramType = "find",defaultValue = ""),
@ApiImplicitParam(name = "subCategory", value = "子常量类型", required = false, dataType = "Short", paramType = "find",defaultValue = ""),
@ApiImplicitParam(name = "constantName", value = "子常量名称", required = false, dataType = "String", paramType = "find",defaultValue = "")
})