动态sql引入
(81条消息) 动态SQL_陈伟chenwei的博客-CSDN博客_动态sql
动态sql的第一个标签
id,username,birthday,sex,address select from users
可以查看项目版本Java的版本:
(81条消息) Mybatis 字符参数出现Error querying database. Cause: java.lang.NumberFormatException: For input string: "李_林奇lc的博客-CSDN博客
where 和 if 的标签
if都要写进where里面并且if不为空的时候那里不需要打空格,只需要打出单引号即可,并且还有就是 if下面都必须用and 连接起来
因为之前你进行set的时候会把之前的没有设置的都改成null,update语句里面的set标签,具体使用方法如下图:
update users where id = #{id} username=#{userName}, bithday=#{birthday}, sex=#{sex}, address=#{address}
set标签在使用的时候还是要去修改一列的,要不还是会出错油猴插件tampermonkey大一新生入学必会技能第二弹!(无需寻找那些插件打包压缩好了)_哔哩哔哩_bilibili
collection说明的是 参数的类型 如果是List则里面填写list
separator表示的是分隔符“,”
item表示的是哪一列
open 和 close 表示的是循环外的符号
批量增加有一个细节就是这里用到了users
insert into users(userName,birthday,sex,address) values (#{u.userName},#{u.birthday},#{u.sex},#{u.address})
批量增加:
@Test
public void test14() throws ParseException {
UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
List users = new ArrayList<>();
Users users1 = new Users("活着", sm.parse("2000-10-20"), "2", "北京");
users.add(users1);
System.out.println(mapper.insertBatch(users));
}
批量更新:
注意一上来就用for each 并且分隔符是分号
并且必须添加这个 jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
指定参数位置
#{arg0},#{arg1}
多个参数可以用这种办法
@Test
public void test15() throws ParseException {
UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
List users= mapper.selectbetween(sm.parse("1999-10-10"),sm.parse("2100-10-20"));
users.forEach(users1 -> System.out.println(users1));
}
@Param 和上面说的都可以解决多个参数的问题
下面来讲一下map的情况(需要重点去掌握)
map在传入多个参数时,效果要好很多,并且还可以区分
@Test
public void test16() throws ParseException {
UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
Map map = new HashMap<>();
Date beginTime = sm.parse("1999-10-20");
Date endTime = sm.parse("2000-10-20");
map.put("begin", beginTime);
map.put("end", endTime);
List list = mapper.getMap(map);
list.forEach(users -> System.out.println(users));
}
list.foreach()的用法还是很好玩的 (users -> System.out.println(.......))
返回一个map
如果返回值是一个map的话,则那个resultType里面必须是“map”列名是那个key
@Test
public void test17(){
UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
Map map=mapper.getReturnMap(3);
System.out.println(map.get("username"));
}
返回多个map list里面装map resultType是map
@Test
public void test18(){
UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
List list = mapper.getMulMap();
list.forEach(listt->System.out.println(listt));
}
如果Users里面的变量名称比如要是使用的userid和我们数据库的id不一致的时候,则可以使用别名
像 select id userid ,username name from users



