DELETE
FROM children;
DELETE FROM user;
INSERT INTO children (id, name, user_id)
VALUES (1,'Jone',1),(2,'Jack',1),(3,'Jack2',1),(4,'Jack',15),(5,'Billie',15);
INSERT INTO user (id, name, age, email)
VALUES (1,'Jone',18,'test1@baomidou.com'),(2,'Jack',20,'test2@baomidou.com'),(3,'Jack',20,'test2@baomidou.com'),(4,'Jack',20,'test2@baomidou.com'),(5,'Jack',20,'test2@baomidou.com'),(6,'Jack',20,'test2@baomidou.com'),(7,'Jack',20,'test2@baomidou.com'),(8,'Jack',20,'test2@baomidou.com'),(9,'Jack',20,'test2@baomidou.com'),(10,'Jack',20,'test2@baomidou.com'),(11,'Jack',20,'test2@baomidou.com'),(12,'Jack',20,'test2@baomidou.com'),(13,'Jack',20,'test2@baomidou.com'),(14,'Jack',20,'test2@baomidou.com'),(15,'Tom',28,'test3@baomidou.com'),(16,'Sandy',21,'test4@baomidou.com'),(17,'Billie',24,'test5@baomidou.com');
-- noinspection SqlNoDataSourceInspectionForFile
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT (20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT (11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id));
DROP TABLE IF EXISTS children;
CREATE TABLE children
(
id BIGINT (20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
user_id BIGINT (20) NULL DEFAULT NULL COMMENT '上级ID',
PRIMARY KEY (id));
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.2</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.zs</groupId><artifactId>test-mybatis-plus</artifactId><version>0.0.1-SNAPSHOT</version><name>test-mybatis-plus</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.4.3.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.49</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
package com.zs.testmybatisplus.mapper;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.ResultMap;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.session.RowBounds;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.zs.testmybatisplus.entity.User;import com.zs.testmybatisplus.model.MyPage;import com.zs.testmybatisplus.model.ParamSome;import com.zs.testmybatisplus.model.UserChildren;/**
* @author miemie
* @since 2018-08-10
*/@MapperpublicinterfaceUserMapperextendsBaseMapper<User>{/**
* 3.x 的 page 可以进行取值,多个入参记得加上注解
* 自定义 page 类必须放在入参第一位
* 返回值可以用 IPage<T> 接收 也可以使用入参的 MyPage<T> 接收
* <li> 3.1.0 之前的版本使用注解会报错,写在 xml 里就没事 </li>
* <li> 3.1.0 开始支持注解,但是返回值只支持 IPage ,不支持 IPage 的子类</li>
*
* @param myPage 自定义 page
* @return 分页数据
*/// @Select("select * from user where (age = #{pg.selectInt} and name = #{pg.selectStr}) or (age = #{ps.yihao} and name = #{ps.erhao})")
MyPage<User>mySelectPage(@Param("pg") MyPage<User> myPage,@Param("ps") ParamSome paramSome);@SuppressWarnings("checkstyle:OperatorWrap")@ResultMap("userChildrenMap")@Select("<script>select u.id,u.name,u.email,u.age,c.id as \"c_id\",c.name as \"c_name\",c.user_id as \"c_user_id\" "+"from user u "+"left join children c on c.user_id = u.id "+"<where>"+"<if test=\"selectInt != null\"> "+"and u.age = #{selectInt} "+"</if> "+"<if test=\"selectStr != null and selectStr != ''\"> "+"and c.name = #{selectStr} "+"</if> "+"</where>"+"</script>")
MyPage<UserChildren>userChildrenPage(MyPage<UserChildren> myPage);
MyPage<User>mySelectPageMap(MyPage<User> pg, Map<String, Object> map);
List<User>mySelectMap(Map<String, Object> param);
List<User>myPageSelect(MyPage<User> myPage);
List<User>iPageSelect(IPage<User> myPage);
List<User>rowBoundList(RowBounds rowBounds, Map<String, Object> map);}
5Mapper.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="com.zs.testmybatisplus.mapper.UserMapper"><resultMap id="userChildrenMap" type="com.zs.testmybatisplus.model.UserChildren"><id column="id" property="id"/><result column="age" property="age"/><result column="email" property="email"/><result column="name" property="name"/><collection property="c" ofType="com.zs.testmybatisplus.entity.Children" columnPrefix="c_"><id column="id" property="id"/><result column="name" property="name"/><result column="user_id" property="userId"/></collection></resultMap><select id="mySelectPage" resultType="com.zs.testmybatisplus.entity.User">
select *
from user
where (age = #{pg.selectInt} and name = #{pg.selectStr})
or (age = #{ps.yihao} and name = #{ps.erhao})</select><select id="mySelectPageMap" resultType="com.zs.testmybatisplus.entity.User">
select * from user
<where><if test="map.name!=null and map.name!=''">
name like #{map.name}</if></where></select><select id="mySelectMap" resultType="com.zs.testmybatisplus.entity.User">
select * from user
<where><if test="name!=null and name!=''">
name like #{name}</if></where></select><select id="myPageSelect" resultType="com.zs.testmybatisplus.entity.User">
select * from user
<where><if test="name!=null and name!=''">
name like '%'||#{name}||'%'</if></where></select><select id="iPageSelect" resultType="com.zs.testmybatisplus.entity.User">
select * from user
<where><if test="name!=null and name!=''">
name like #{name}</if></where></select><select id="rowBoundList" resultType="com.zs.testmybatisplus.entity.User">
select * from user
<where><if test="name!=null and name!=''">
name like #{name}</if></where></select></mapper>