动态SQL 添加 Trim 标签

分析需求:
完整添加SQL:
insert into userinfo(user_name,user_pass) values(#{userName},#{userPass})
如果只有第一个字段的情况:
insert into userinfo(user_name,) values(#{userName},)//多余的,问题

Trim(对包含的内容加上前缀或后缀)

prefix前缀, suffix后缀.
suffixOverrides后缀判断去多余

type_id,

需求:多字段任意添加
任意添加:注意第二个trim的前缀。

映射文件如下所示:

第一种 VALUES 放在外面 :

INSERT
INTO t_user_info


u_name,


u_pass,


VALUES


#{uName},


#{uPass},


第二种 VALUES 放在 prefix=" VALUES ( "


INSERT
INTO t_user_info


u_name,


u_pass,


  
    #{uName},
  
  
    #{uPass},
  

注意上面输入参数使用的是 实体类 UserInfo 当然我们可以将输入参数修改成Map 所以第三种产生了。

第三种 :

INSERT
INTO t_user_info


u_name,


u_pass,


VALUES


#{uName},


#{uPass},


映射文件对应的接口如下所示:

int  insertMyUserInfo(UserInfo userInfo);
int  insertMyUserInfoMap(Map map);

对应的测试代码如下:
@Test
public void testInsertMyUserInfo(){
SqlSession sqlSession = SqlSessionFactoryUtilSingleL.getSqlSession();
UserInfoMapper mapper = sqlSession.getMapper(UserInfoMapper.class);
UserInfo user=new UserInfo();
user.setuName("张英海啊");
user.setuPass("十个好人啊");
int i = mapper.insertMyUserInfo(user);
System.out.println(i);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testInsertMyUserInfoMap(){
SqlSession sqlSession = SqlSessionFactoryUtilSingleL.getSqlSession();
UserInfoMapper mapper = sqlSession.getMapper(UserInfoMapper.class);

    Map  integerMap =new HashMap<>();
    integerMap.put("uName","张颖豪aaaaaa");
    mapper.insertMyUserInfoMap(integerMap);
    sqlSession.commit();
    sqlSession.close();
}

可以发现传入实体对象类以及Map 都可以完成。

你可能感兴趣的:(动态SQL 添加 Trim 标签)