MybatisPlus分页查询

  • 只需传入分页的参数,返回分页对象类型就行了
  • 这种方式是物理分页

分页参数

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

int(11)与int(8)的区别:

括号里面的是显示宽度。显示宽度只是指明 mysql需要用多少个字符来显示该列数值,数值的位数小于指定的宽度时,左侧用数字 0 填充。
如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。
在存储方面确实没什么不同,设置长度只有在设置了自动填充 ZEROFILL 的时候才体现出来, 比如 id=1 长度为 int (5) 的话会显示 00001。而一旦人工设置了 ZEROFILL 属性,MySQL 会自动设置 UNSIGNED 属性(即 ZEROFILL 不能存储负数)

char(n)与varchar(n)的区别:

与int不同,这里的n并不代表字节,而代表字符。
varchar只会占用实际字符应该占用的字节空间L+1,char占满
超过char和varchar的n设置后,字符串会被截断。
char在存储的时候会截断尾部的空格,varchar和text不会。
可变长度的字符型数据(varchar),会产生碎片
varchar(100)和varchar(200)按理说,在低于100时都是一样的,但其实varchar(200)更占内存。

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 (依赖于驱动)

猜你喜欢

转载自blog.csdn.net/howeres/article/details/108734218