mybatis动态sql,分页
2021/12/15 2:23:46
本文主要是介绍mybatis动态sql,分页,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、基础增删改查
来自逆向生成
代码示例:只选取了新增和查询
增
<insert id="insert" parameterType="com.csf.model.Book" > insert into t_mvc_book (bid, bname, price ) values (#{bid,jdbcType=INTEGER}, #{bname,jdbcType=VARCHAR}, #{price,jdbcType=REAL} ) </insert>
查
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > select <include refid="Base_Column_List" /> from t_mvc_book where bid = #{bid,jdbcType=INTEGER} </select>
标签名就是方法类型,各属性:
id:方法名
parameterType:返回类型
然后具体的sql语句在标签内容中,这里就可以通过if和foreach实现动态sql。
例如:
使用foreach进行查询
<select id="selectBooksIn" resultType="com.javaxl.model.Book" parameterType="java.util.List"> select * from t_mvc_book where bid in <foreach collection="bookIds" open="(" close=")" separator="," item="bid"> #{bid} </foreach> </select>
使用foreach循环,得到一个数据集合,再根据数据集合进行查询。
if实现在默认生成的那几个方法中有。
2、#与$的区别
都用于在sql语句中引用参数的值
#:在语句中会自带单引号,不需要手动加入单引号,不过灵活性欠缺
$:用法与上面的差不多,不过不会带单引号,所以在使用时更加灵活,不过因此也有sql注入的风险。
3、查询语句结果集的配置
五种情况
1 使用resultMap返回自定义类型集合
2 使用resultType返回List<T>
3 使用resultType返回单个对象
4 使用resultType返回List<Map>,适用于多表查询返回结果集
5 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集
分别对应各种应用场景
其中resultMap适合在查询自定义实体类的情况
而其他的,适用于返回值是由jdk提供的数据类型而非自定义实体类的情况
4、分页查询
在pom.xml中导入分页插件的pom依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
在mybatis的主配置文件中将pagehelper插件配置到mybatis中
<!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> </plugin>
在具体的使用时,需要在查询语句前开启分页
if(pageBean != null && pageBean.isPagination()){ PageHelper.startPage(pageBean.getPage(),pageBean.getRows()); }
这里传入的参数是起始下标和偏移量
在查询语句后,对结果集进行处理
这里借助pageBean,更方便我们查看结果
if(pageBean != null && pageBean.isPagination()){ PageInfo pageInfo = new PageInfo(list); System.out.println("页码:"+pageInfo.getPageNum()); System.out.println("页大小:"+pageInfo.getPageSize()); System.out.println("总记录:"+pageInfo.getTotal()); pageBean.setTotal(pageInfo.getTotal()+""); }
5、特殊字符的处理
因为是使用xml文件来写sql语句,像大于、小于号就不能再使用了,因为会与xml文件格式有冲突。
1、使用特殊标签包裹
<![CDATA[ ]]>
使用:
<select id="userInfo" parameterType="java.util.HashMap" resultMap="user"> SELECT id,newTitle, newsDay FROM newsTable WHERE 1=1 AND newsday <![CDATA[>=]]> #{startTime} AND newsday <![CDATA[<= ]]>#{endTime} ]]> </select>
2、转义
特殊字符 转义序列
< <
> >
& &
" "
' '
这篇关于mybatis动态sql,分页的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南