示例一:mybatis之if标签
添加lombok主键(在实体类定义@Builder)
在这可以使用builder
trim mybatis中trim是动态拼接;java中表示去除前后空格
prefix:前缀
suffix:后缀
suffixOverride:去除后缀指定的字符
prefixOverrides:去除前缀指定的字符
示例二:mybatis之foreach标签
where:当bid有值时自动拼接一个where
choose:按顺序判断内部when标签中test条件是否成立,成立则choose结束,不成立则执行otherwise中的set:在修改语句中动态配置set关键字,并剔除追加到条件末尾的任何不相关逗号模糊查询(3种方式)
1)#{}:相当于占位符,参数传递时需要手动拼接%%,列如:"zs" -> #{} -> 'zs'
2)${}:使用$传递参数时,只会传递参数本身,列如:"zs" -> ${} -> zs
3)concat:mysql的函数
1,使用${...}代替#{...}(不建议使用该方式,有SQL注入风险)
关键:#{...}与${...}区别?
参数类型为字符串,#会在前后加单引号['],$则直接插入值
注:1) mybatis中使用OGNL表达式传递参数
2) 优先使用#{...}
3) ${...}方式存在SQL注入风险
3.查询返回结果集
resultMap:适合使用返回值是自定义实体类的情况
resultType:适合使用返回值的数据类型是非自定义的,即jdk的提供的类型
3.1 使用resultMap返回自定义类型集合
3.2 使用resultType返回List<T>
3.3 使用resultType返回单个对象
3.4 使用resultType返回List<Map>,适用于多表查询返回结果集
3.5 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集
4.分页查询
步骤:
1, 导入分页插件
2,将pagehelper插件配置到mybatis.cfg.xml中
3,导入PageBean工具类
4.1使用插件后,查询实际返回的是Page<E>,而非List<E>,Page继承了ArrayList,同时还包含分页相关的信息
Page<Book> page = (Page<Book>)list;
System.out.println("页码:" + page.getPageNum());
System.out.println("页大小:" + page.getPageSize());
System.out.println("总记录:" + page.getTotal());
4.2 使用PageInfo
PageInfo pageInfo = new PageInfo(list);
System.out.println("页码:" + pageInfo.getPageNum());
System.out.println("页大小:" + pageInfo.getPageSize());
System.out.println("总记录:" + pageInfo.getTotal());
5.特殊字符处理
>(>)
<(<)
&(&)
空格( )