数据层框架的整合使用(SpringBoot+MyBatisPlus)

        MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,它在MyBatis的基础上提供了一些更加便捷和强大的功能

原理:

  • 代码生成器:MyBatis-Plus提供了一个代码生成器,可以根据数据库表结构自动生成对应的实体类、映射器接口以及XML文件。这样可以减少手动编写重复的代码。
  • ActiveRecord模式:MyBatis-Plus支持ActiveRecord模式,即实体类继承BaseMapper接口后,自动拥有CRUD(增删改查)等数据库操作的方法,无需手动编写mapper接口。
  • Lambda表达式:MyBatis-Plus支持Lambda表达式,通过Lambda表达式可以方便地进行条件构造,避免了手写SQL的繁琐。
  • 自动填充:MyBatis-Plus提供了自动填充功能,可以在插入或更新数据时自动填充某些字段,如创建时间、更新时间等。
  • 分页查询:MyBatis-Plus提供了丰富的分页查询功能,可以方便地进行分页查询并获取分页结果。

应用实现:

  • 引入依赖:在项目的pom.xml文件中引入MyBatis-Plus的相关依赖。
  • 配置数据源:在配置文件中配置数据库连接信息。
  • 定义实体类:使用@TableName注解标注实体类对应的数据表。
  • 创建映射器接口:继承BaseMapper接口,可以选择性地编写一些自定义的数据库操作方法。
  • 配置代码生成器(可选):根据数据库表结构自动生成实体类、映射器接口以及XML文件,提高开发效率。
  • 编写业务逻辑代码:使用MyBatis-Plus提供的API进行数据的增删改查操作,如insert()selectById()updateById()deleteById()等。
  • 使用Lambda表达式:通过Lambda表达式进行条件构造,如eq()like()orderByDesc()等。
  • 分页查询:使用Page对象进行分页查询,并获取分页结果。


创建项目

MyBatisPlus

一、添加依赖

<!-- MyBatisPlus依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
<!--LomBok依赖-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId> <optional>true</optional>
</dependency>
<!--mysql依赖-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

二、添加配置源

改后缀名

三、在启动类上扫描dao的路径

package com.example.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.hello.mapper")//扫描dao的路径
public class HelloApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }

}

四、创建实体并与数据库表关联
package demo.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_user")
public class User {
    @TableId
    private Long id;
    private String userName;
    private String passwd;
    private Float money;
}
五、创建dao继承自BaseMapper

六、在controller中测试MyBatisPlus
1、通过@Resource注解实例化dao对象
@RestController
public class UserServlet {
    @Resource
    private UserMapper mapper;
    }
2、使用MyBatisPlus实现基本的CRUD
package hello.controller;

import hello.mapper.UserMapper;
import hello.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;


@RestController
public class UserServlet {
    @Resource
    private UserMapper mapper;
    //MybatisPlus
    //增
    @RequestMapping("/t1")
    public int insertUser(){
        return dao.insert(new User(null, "tom", "123"));
    }
    //查全部
    @RequestMapping("/t2")
    public List<User> queryAll(){
        return dao.selectList(null);
    }
    //根据ID查询
    @RequestMapping("/t3")
    public User queryById(){
        return dao.selectById(1001);
    }
    //修改
    @RequestMapping("/t4")
    public int changeById(){
        return dao.updateById(new User(1592479791261057026L, "tomson", "123456"));
    }
    //删除
    @RequestMapping("/t5")
    public int deleteById(){
        return dao.deleteById(1592479791261057026L);
    }
    //批量删除
    @RequestMapping("/t6")
    public int deleteByIds(){
        return mapper.deleteBatchIds(Arrays.asList(1592443398207979521L,1592443445872050177L));
    }
}
七、MyBatis
1、在resources文件夹下创建mappers文件夹,创建xml文件

2、在application.yml配置文件中配置mapper文件夹
mapper-locations: classpath:mappers/*.xml
在UserDAO中添加方法
package hello.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import hello.entity.User;

import javax.annotation.Resource;

public interface UserMapper extends BaseMapper<User> {

    public User login(String userName,String passwd);

    public int UserAdd(User user);

    public int UserUpdate(User user);

    public int deleteById(Long id);
}
在mappers文件夹中创建UserMapper.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="demo.dao.UserDAO">

</mapper>
维护方法的sql语句
<?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="hello.mapper.UserMapp">
    <select id="login" resultType="hello.entity.User">
        select * from t_user where user_name=#{userName} and passwd=#{passwd}
    </select>

    <insert id="UserAdd">
        insert into t_user values (#{id},#{userName},#{passwd})
    </insert>

    <update id="UserUpdate">
        update t_user set user_name = #{userName} , passwd = #{passwd} where id=#{id}
    </update>

    <delete id="deleteById">
        delete from t_user where id = #{id}
    </delete>
</mapper>
在controller中测试
package hello.controller;

import hello.mapper.UserMapper;
import hello.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;


@RestController
public class UserServlet {
    @Resource
    private UserMapper mapper;
    //MybatisPlus
    //增
    

    @RequestMapping("/t7")
    public User login(String name, String pwd){
        return dao.login(name, pwd);
    }
    @RequestMapping("/t8")
    public int UserAdd(String name, String pwd) {
        int rows = dao.UserAdd(new User(null, name, pwd));
        return rows;
    }

    @RequestMapping("/t9")
    public int UserUpdate(User user) {
        return dao.UserUpdate(new User(1001l, "admin", "123"));
    }

    @RequestMapping("/t10")
    public int deleteById(Long id) {
        return dao.deleteById(id);
    }
}

总而言之,MyBatis-Plus在MyBatis的基础上进行了功能增强和便捷化的设计,通过提供代码生成器、ActiveRecord模式、Lambda表达式、自动填充和分页查询等功能,简化了数据库操作的开发流程,并提高了开发效率。在实际应用中,可以根据项目需求灵活选择使用MyBatis-Plus来简化数据访问层的开发。以上文章内容仅仅是是个人见解,有不足望指教。

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值