parameterType="com.baomidou.mybatisplus.extension.plugins.pagination.Page"
时间: 2023-09-27 21:06:53 浏览: 71
这是MyBatis-Plus中分页插件的配置参数类型,用于指定分页查询的相关参数。其中,`com.baomidou.mybatisplus.extension.plugins.pagination.Page`是MyBatis-Plus中自带的分页查询类,可以方便地进行分页查询操作。在使用分页插件时,我们可以将这个类作为分页参数类型,然后在Mapper映射文件中使用它来进行分页查询。这样就可以方便地实现分页查询功能了。
相关问题
parameterType="com.baomidou.mybatisplus.extension.plugins.pagination.Page"在xml中的详细用法
在MyBatis-Plus中,使用分页插件可以方便地进行分页查询。在Mapper映射文件中,我们可以通过配置`parameterType`属性来指定分页查询的相关参数类型为`com.baomidou.mybatisplus.extension.plugins.pagination.Page`,然后在SQL语句中使用这个类型来进行分页查询。下面是一个示例:
```
<!-- 定义查询语句 -->
<select id="selectUserList" parameterType="com.baomidou.mybatisplus.extension.plugins.pagination.Page" resultType="User">
SELECT * FROM user
<where>
<if test="name != null and name != ''">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
ORDER BY id ASC
LIMIT #{page.current}, #{page.size}
</select>
```
在上面的示例中,我们定义了一个名为`selectUserList`的查询语句,并通过`parameterType`属性指定了分页查询的参数类型为`com.baomidou.mybatisplus.extension.plugins.pagination.Page`。在SQL语句中,我们使用了MyBatis-Plus提供的分页查询语法,即使用`LIMIT`关键字来限制查询结果的范围,其中`#{page.current}`表示当前页码,`#{page.size}`表示每页显示的记录数。这个`#{page}`参数就是我们上面定义的`Page`类的实例,可以在Java代码中设置它的值,然后传递给Mapper进行分页查询。
mapper.xml.vm详细
以下是 MyBatis-Plus 代码生成器中生成的 Mapper XML 模板(mapper.xml.vm)的详细说明:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<mapper namespace="$!{mapperPackage}.${tableInfo.mapperName}">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="$!{tableInfo.entityName}">
<id column="$!{tableInfo.keyColumn}" property="$!{tableInfo.keyProperty}" />
#foreach($field in $tableInfo.fields)
<result column="$!{field.column}" property="$!{field.property}" />
#end
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
#foreach($field in $tableInfo.fields)
$!{field.column},
#end
</sql>
<!-- 插入数据 -->
<insert id="insert" parameterType="$!{tableInfo.entityFullName}">
insert into $!{tableInfo.tableName} (
#foreach($field in $tableInfo.fields)
$!{field.column},
#end
) values (
#foreach($field in $tableInfo.fields)
#{ $!{field.property},jdbcType=$!{field.jdbcType}},
#end
)
</insert>
<!-- 更新数据 -->
<update id="update" parameterType="$!{tableInfo.entityFullName}">
update $!{tableInfo.tableName}
<set>
#foreach($field in $tableInfo.fields)
<if test="$!{field.property} != null">
$!{field.column} = #{ $!{field.property},jdbcType=$!{field.jdbcType}},
</if>
#end
</set>
where $!{tableInfo.keyColumn} = #{ $!{tableInfo.keyProperty},jdbcType=$!{tableInfo.keyJdbcType}}
</update>
<!-- 删除数据 -->
<delete id="delete" parameterType="$!{tableInfo.keyJdbcType}">
delete from $!{tableInfo.tableName} where $!{tableInfo.keyColumn} = #{ $!{tableInfo.keyProperty},jdbcType=$!{tableInfo.keyJdbcType}}
</delete>
<!-- 查询单条数据 -->
<select id="selectById" resultMap="BaseResultMap" parameterType="$!{tableInfo.keyJdbcType}">
select <include refid="Base_Column_List" /> from $!{tableInfo.tableName} where $!{tableInfo.keyColumn} = #{ $!{tableInfo.keyProperty},jdbcType=$!{tableInfo.keyJdbcType}}
</select>
<!-- 分页查询数据 -->
<select id="selectPage" resultMap="BaseResultMap" parameterType="com.baomidou.mybatisplus.extension.plugins.pagination.Page">
select <include refid="Base_Column_List" /> from $!{tableInfo.tableName} where 1=1
#if($strategy.validTablePrefix && $strategy.tablePrefix != "")
and $!{tableInfo.tableName}.table_name like '${strategy.tablePrefix}%'
#end
#if($strategy.validFieldPrefix && $strategy.fieldPrefix != "")
and $!{tableInfo.tableName}.column_name like '${strategy.fieldPrefix}%'
#end
order by $!{tableInfo.keyColumn} asc
limit #{offset}, #{limit}
</select>
</mapper>
```
该模板中包含了常见的增删改查操作的 SQL 语句模板,以下是详细说明:
- `<resultMap>`:定义了映射结果的规则,包括将数据库中的列名映射到 Java 实体类中的属性名;
- `<sql>`:定义了通用的查询结果列;
- `<insert>`:定义了插入数据的 SQL 语句模板,包括表名、列名和值;
- `<update>`:定义了更新数据的 SQL 语句模板,包括表名、列名、值和条件(主键);
- `<delete>`:定义了删除数据的 SQL 语句模板,包括表名和条件(主键);
- `<select>`:定义了查询数据的 SQL 语句模板,包括表名、列名和条件(主键、分页等)。
以上 SQL 语句模板中的变量均通过 MyBatis-Plus 代码生成器中的变量替换功能实现,具体实现方式可以参考 MyBatis-Plus 代码生成器的源代码。
阅读全文