mybatis-plus增删改查以及前后端分离模式下的项目应用

mybatis-plus增删改查(新版)

所需依赖
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
<!--        阿里巴巴连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>
    </dependencies>
提供数据库表 (mybatis-plus官网提供)

其对应的数据库 Schema 脚本如下

如果需要使用mp的主键自增,需要设置主键自增 AUTO_INCREMENT

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)
);

其对应的数据库 Data 脚本如下

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
创建一个spring-boot项目
修改配置文件为application.yml(个人习惯,也可以不改)

配置数据库信息

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: password
新建实体类UserPojo
@Data//自动set/get方法
@TableName("user")//对应数据库表名,如果类名和数据库表名一样可以忽略此注解
@AllArgsConstructor//自动全参构造
@NoArgsConstructor//自动无参构造
@Accessors(chain = true)//链式赋值
public class UserPojo {
    @TableId(type = IdType.AUTO,value = "id")//主键自增
    private Long id;
//    @TableField(value = "name")  如果实体类字段和数据库字段不对应可以使用该注解指定
    private String name;
    private Integer age;
    private String email;
}
新建UserMapper接口实现BaseMapper接口
@Mapper//使用该注解指定为该接口为mapper接口
//如果不使用该注解就需要在启动类中用@MapperScan("mapper接口的全路径名")指定
public interface UserMapper extends BaseMapper<UserPojo> {
    //注意BaseMapper的泛型一定要对应实体类,实体类要对应数据库表
测试方法中测试mybatis-plus增删改查方法
@SpringBootTest
class MybatisPlusNewdemoApplicationTests {
    @Autowired(required = false)
    private UserMapper mapper;


    /**|
     * 根据id查询
     */
    @Test
    public void test1(){
        UserPojo userPojo = mapper.selectById(1);
        System.out.println(userPojo);
    }

    /**
     * 根据map查询
     */
    @Test
    public void test2(){
        Map<String, Object> map = new HashMap<>();
        map.put("id",1);
        List<UserPojo> userPojos = mapper.selectByMap(map);
        userPojos.forEach(System.out::println);
    }

    /**
     * 自定义条件查询
     */
    @Test
    public void test3(){
        //QueryWrappert条件构造器
        List<UserPojo> userPojos = mapper.selectList(new QueryWrapper<UserPojo>().eq("id", 1));
        userPojos.forEach(System.out::println);
    }

    /**
     *根据对象添加
     * 使用mybatis-plus的主键自增功能,需要数据库的该字段也设置自增属性
     */
    @Test
    public void test4(){
        UserPojo userPojo = new UserPojo();
        userPojo.setAge(20).setEmail("123@qq.com").setName("生如夏花");
        mapper.insert(userPojo);
    }

    /**
     * 自定义条件构造器删除
     */
    @Test
    public void test5(){
        mapper.delete(new QueryWrapper<UserPojo>().eq("name","生如夏花"));
    }

    /**
     * 根据id集合删除
     */
    @Test
    public void test6(){
        List<Long> longs = new ArrayList<>();
        longs.add(7l);
        longs.add(8l);
        mapper.deleteBatchIds(longs);
    }

    /**
     * 根据id修改
     * updateById方法会自动去寻找对象中的id属性
     */
    @Test
    public void test7(){
        UserPojo userPojo = new UserPojo();
        userPojo.setId(1l).setAge(20).setEmail("123@qq.com").setName("生如夏花");
        mapper.updateById(userPojo);
    }

    /**
     * 自定义条件构造器更新
     */
    @Test
    public void test8(){
        UserPojo userPojo = new UserPojo();
        userPojo.setAge(20).setEmail("123@qq.com").setName("生如夏花");
        mapper.update(userPojo,new QueryWrapper<UserPojo>().eq("id",2l));
    }
}
mybatis-plus的项目应用

需求

查询所有用户

请求路径:http://localhost:8080/user

请求方法:get

请求参数: 无

返回对象:{

  • data:

    [

    {

    id: 1,

    name: “生如夏花”,

    age: 20,

    email: “123@qq.com”

    }

    ],

    meta:

    {

    status: 200,

    msg: “查询成功”

    }

}

新增依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.3.RELEASE</version>
</dependency>

在application.yml中设置启动端口

server:
  port: 8080

新建UserController

@RestController//指定该类为controller
public class UserController {
    @Autowired(required = false)
    private UserService userService;

    @GetMapping("user")
    public ReturnVo getUserAll(){
        return userService.getUserAll();
    }
}

新建UserService接口

public interface UserService {
    //查询全部用户
    ReturnVo getUserAll();
}

新建UserServiceImpl实现UserService接口

@Service//指定该类为service
public class UserServiceImpl implements UserService {

    @Autowired(required = false)
    private UserMapper userMapper;
    @Override
    public ReturnVo getUserAll() {
        //queryWrapper为null表示查询全部
        List<UserPojo> userPojos = userMapper.selectList(null);
        return new ReturnVo(userPojos,new Meta(200,"查询成功"));
    }
}

新建ReturnVo返回类

/**
 * 统一返回类
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class ReturnVo {
    private Object data;
    private Meta meta;
}

新建Meta返回状态类

/**
 * 状态返回类
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class Meta {
    private Integer status;
    private String msg;
}

通过浏览器访问http://localhost:8080/user

得到以下数据

{
    "data": [
        {
            "id": 1,
            "name": "生如夏花",
            "age": 20,
            "email": "123@qq.com"
        },
        {
            "id": 2,
            "name": "生如夏花",
            "age": 20,
            "email": "123@qq.com"
        },
        {
            "id": 3,
            "name": "Tom",
            "age": 28,
            "email": "test3@baomidou.com"
        },
        {
            "id": 4,
            "name": "Sandy",
            "age": 21,
            "email": "test4@baomidou.com"
        },
        {
            "id": 5,
            "name": "Billie",
            "age": 24,
            "email": "test5@baomidou.com"
        }
    ],
    "meta": {
        "status": 200,
        "msg": "查询成功"
    }
}

这便就是前后端分离模式下mybatis-plus在项目中的简单应用

如果mybatis-plus自带的方法不能满足要求,可以在mapper中自定义方法

例:查询所有用户

public interface UserMapper extends BaseMapper<UserPojo> {
    //查询所有用户
    @Select("select * from user")
    List<UserPojo> getUserAll();
}

自定义方法可以满足大部分项目需求,不过复杂的sql语句还是建议写在xml中,例如多表联合查询

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值