在实际的项目需求中,有很多字段数值为空,这时需要我们采取有效的方式避免空值插入数据库,今天主要讲解一下动态sql标签trim的用法
实际需求:插入一条用户信息,空值不允许插入
①mapper中的sql
id="insertUserInfoByTrim" parameterType="com.cckj.bean.UserInfo">
INSERT into userinfo
prefix="(" suffix=")" suffixOverrides=",">
test="username !=null and username != ''">
username,
test="sex !=null and sex != ''">
sex,
test="age !=null">
age,
test="phone !=null and phone != ''">
phone,
test="address !=null and address != ''">
address,
prefix="values(" suffix=")" suffixOverrides=",">
test="username !=null and username != ''">
#{username,jdbcType=VARCHAR},
test="sex !=null and sex != ''">
#{sex,jdbcType=CHAR},
test="age !=null">
#{age,jdbcType=INTEGER},
test="phone !=null and phone != ''">
#{phone,jdbcType=VARCHAR},
test="address !=null and address != ''">
#{address,jdbcType=VARCHAR},
咋地一看,是不是有点辣眼睛?随笔者娓娓道来:
prefix:表示在trim标签内sql语句加上前缀xxx
suffix:表示在trim标签内sql语句加上后缀xxx
suffixOverrides:表示去除最后一个后缀xxx
xxx表示属性引号中的值;
②controller代码
@RequestMapping(value = "/getUserInfoByTrim", produces = "application/json;charset=utf-8") public String getUserInfoByTrim(HttpServletResponse response,UserInfo userInfo){ response.setHeader("Access-Control-Allow-Origin","*"); int i = userInfoService.insertUserInfoByTrim(userInfo); return i>0?success("插入成功"):success("插入失败"); }
③测试
④数据库验证
①mapper中的sql
prefixOverrides:表示去除第一个前缀and或者or
②controller代码
@RequestMapping(value = "/getUserInfoByWhere", produces = "application/json;charset=utf-8") public Map③测试,Object> getUserInfoByWhere(HttpServletResponse response,String username,String phone){ response.setHeader("Access-Control-Allow-Origin","*"); HashMap map = new HashMap(); map.put("username",username); map.put("phone",phone); List userList = userInfoService.selectInfoByWhere(map); Map ,Object> map1 = new HashMap<>(); map1.put("userlist",userList); map1.put("status",1); return map1; }
好了,game over! 我是张星,欢迎加入博主技术交流群,群号:313145288