- 只需传入分页的参数,返回分页对象类型就行了
- 这种方式是物理分页
分页参数
Page<OrderStandardVO> page =
new Page<OrderStandardVO>(pageNo, pageSize); // (current, size)
Mapper.java
public interface OrderStandardMapper extends BaseMapper<OrderStandard> {
IPage<OrderStandardVO> getOrderStandardPage(
Page<OrderStandardVO> page,
@Param("orderStandard") OrderStandard orderStandard,
@Param("cityCode") String cityCode);
}
Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.demo.dache.mapper.OrderStandardMapper">
<select id="getOrderStandardPage" resultType="org.jeecg.modules.demo.dache.vo.OrderStandardVO">
SELECT d.*,cc.`name` cityName
FROM dc_driver_order_standard d
LEFT JOIN dc_citycode cc ON d.ad_code = cc.adcode
<where>
<if test="cityCode != null">
AND d.ad_code like CONCAT(#{cityCode},'%')
</if>
<if test="orderStandard != null">
<if test="orderStandard.valuationMethod != null">
AND d.valuation_method = #{orderStandard.valuationMethod}
</if>
</if>
</where>
ORDER BY d.created_at DESC
</select>
</mapper>
limit #,# (偏移量, 记录行最大数目)
其中第二个参数设为-1可以检索偏移量到结束的所有记录.
limit n 等价于limit 0,n
limit n offset m 等价于 limit m,n
查询
DriverPosition vehicleOne =
driverPositionService.getOne(new QueryWrapper<DriverPosition>()
.lambda()
.eq(DriverPosition::getVehicleNo, vehicleNo)
.last("limit 1"));
.apply("sql语句");
// select column_name from table_name where date_format(mytime, '%Y-%m-%d') = ?
关于tinyint(1)
在mysql数据库里面一般使用tinyint(1)代表boolean类型
而如果存储enum比如1、2、3、4,把类型设为tinyint(1)。
则在mybatis进行转换,转为map对象时,存的key就会变成boolean类型。
解决办法:
- jdbcURL的参数后面,添加:&tinyInt1isBit=false
- 更改字段类型为int
MapperXML
- select元素属性
属性 | 说明 |
---|---|
id | 表示命名空间中的唯一标识符, 常与命名空间组合起来使用。组合后如果不唯一, MyBatis 会抛出异常 |
parameter Type | 该属性表示传入SQL语句的参数类的全限定名或者别名。它是一个可选属性,因为MyBatis可以通过TypeHandler推断出具体传入语句的参数。其默认值是unset (依赖于驱动) |
resultType | 从SQL语句中返回的类型的类的全限定名或者别名。如果是集合类型,那么返回的应该是集合可以包含的类型,而不是集合本身。返回时可以使用resultType或resultMtap之一 |
resultMap | 表示外部resultMap的命名引用。返回时可以使用resultType或resultMap之一 |
flushCache | 表示在调用SQL语句之后,是否需要MyBatis清空之前查询的本地缓存和二级缓存。其值为布尔类型( truelfalse),默认值为false.如果设置为true,则任何时候只要SQL语句被调用,都会清空本地缓存和二级缓存 |
useCache | 用于控制二级缓存的开启和关闭。其值为布尔类型( truelfalse),默认值为true,表示将查询结果存入二级缓存中 |
timeout | 用于设置超时参数,单位为秒。超时时将抛出异常 |
fetchSize | 获取记录的总条数设定,其默认值是unset (依赖于驱动) |
statementType | 用于设置MyBatis使用哪个JDBC的Statement工作,其值为STATEMENT.PREPARED(默认值)或CALLABLE,分别对应JDBC中的Statement、 PreparedStatement和CallableStatement |
resultSetType | 表示结果集的类型,其值可设置为FORWARD_ ONLY、SCROLL_ SENSITIVE 或SCROLL INSENSITIVE,它的默认值是unset (依赖于驱动) |
MyBatis特殊字符转义
方式1: 转义字符
<select id="selectMethod" resultType="someObject">
select * from some where date >= #{start} and date <= #{end}
</select>
- 转义字符表
转义 | 符号 | 名称 |
---|---|---|
< | < | less than |
> | > | greater than |
& | & | ampersand |
<![CDATA[ , ]]> | CDATA | Character Data |
方式2: 标记CDATA
- <! 前缀
<! 是一个通用的声明前缀,表示后面的内容是一个标记或指令。 - CDATA
CDATA 表示后面的内容是“字符数据”,告诉解析器该部分内容应被视为文本,而不是 XML 标签。 - [ 和 ]
方括号用于界定字符数据的开始和结束。这是 XML 语法的一部分。
<select id="selectMethod" resultType="someObject">
<![CDATA[
select * from some where date >= #{start} and date <= #{end}
]]>
</select>