在springboot中使用通用mapper与mybatisplus

目录

mybatis的问题(为什么要用通用mapper和mybatisplus)

通用mapper

导入依赖

配置实体类

编写Dao

开启包扫描

编写配置文件

编写service并验证

自定义条件查询

mybatisplus

导入依赖

配置数据库信息

编写实体类

编写Dao

进行测试

自定义查询/使用


mybatis的问题(为什么要用通用mapper和mybatisplus)

在之前使用mybatis的时候,有一个比较麻烦的地方, 就是我们所有的SQL都需要自己写,包括基础的增删改查,这个我们也得自己写,这个不是很方便,因为基础的这些语句,我们不管哪个表,都可能遇见,这样就很浪费时间和精力

别犟,我知道mybatis有逆向工程,我也在之前分享了mybatis逆向工程的使用,但是不可否认的是,mybatis有这个缺陷,逆向工程也是为了解决这个问题

本次要分享的通用mapper和mybatisplus就是解决了这个问题,当然还有其他的一些dao框架也能避免这些问题,比如JPA啦,这个是后话,我们之后再聊,先说这两个,通用mapper和mybatisplus

通用mapper

导入依赖

        
            tk.mybatis
            mapper-spring-boot-starter
            2.1.5
        
        
            mysql
            mysql-connector-java
            8.0.16
        

配置实体类

package own.study.vo;

import lombok.Data;

import javax.persistence.Id;
import javax.persistence.Table;

@Data
@Table(name = "usermessage")
public class User {

    private String username;
    private String password;
    @Id
    private int id;

    public String getUsername() {
        return username;
    }

    public void setUsrname(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", id=" + id +
                '}';
    }
}

注意,这里实体类和数据库的关系,默认用驼峰命名,如果说明明不规则,请用注解指定

@Column(name = "user_name")

编写Dao

package own.study.dao;

import own.study.vo.User;
import tk.mybatis.mapper.common.Mapper;


public interface UserDao extends Mapper {
}

开启包扫描

@SpringBootApplication
@EnableAspectJAutoProxy
@MapperScan("own.study.dao")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

编写配置文件

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

注意,因为我本地的mysql用的8.0版本,所以存在时区问题,我在url后面指定了读取的时区地址

编写service并验证

package own.study.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import own.study.dao.UserDao;
import own.study.vo.User;

import java.util.List;


@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public void testMapaper () {
        List users = userDao.selectAll();
        for (User use : users) {
            System.out.println(use);
        }
    }

}

完事,齐活~ 看,是不是没有写什么基础SQL

还有其他的基础方法,也都有

在springboot中使用通用mapper与mybatisplus_第1张图片

在springboot中使用通用mapper与mybatisplus_第2张图片

自定义条件查询

当然,通用mapper也可以自定义SQL查询,可以在Dao上编写SQL

例如

public interface UserDao extends Mapper {

	@Select(value="select * from tb_user where user_name=#{username}")
	User findByUsername(String username);
}

这是一种方法,还可以创建条件构造器,进行使用

        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("username", "root");
        List users = userDao.selectByExample(example);
        for (User user : users) {
            System.out.println(user);
        }

在springboot中使用通用mapper与mybatisplus_第3张图片

mybatisplus

导入依赖

        
            com.baomidou
            mybatis-plus-boot-starter
            3.1.2
        
        
            mysql
            mysql-connector-java
            8.0.16
        

配置数据库信息

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

编写实体类

package own.study.vo;

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

@Data
@TableName(value = "usermessage")
public class User {

    private String username;
    private String password;
    @TableId
    private int id;

    public String getUsername() {
        return username;
    }

    public void setUsrname(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", id=" + id +
                '}';
    }
}

编写Dao

package own.study.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import own.study.vo.User;


public interface UserDao extends BaseMapper {
}

进行测试

package own.study.web;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import own.study.aop.ExceptionEnu;
import own.study.aop.MyException;
import own.study.aop.MyRsp;
import own.study.dao.UserDao;
import own.study.vo.User;


@RestController
public class OneController {

    @Autowired
    private UserDao userDao;

    @GetMapping("/doCheck")
    public void doCheck (int age) {
        User user = userDao.selectById(1);
        System.out.println(user);
    }

}

在springboot中使用通用mapper与mybatisplus_第4张图片

自定义查询/使用

当然,我们也可以自定义查询或者使用,构造条件构造器,也支持在Dao用注解去写自定义SQL

如下:

        QueryWrapper wrapper = new QueryWrapper<>();
        wrapper.eq("username", "root");
        User user = userDao.selectOne(wrapper);
        System.out.println(user);

当然,这个只是查询的条件构造器,还有修改等的条件构造器

在springboot中使用通用mapper与mybatisplus_第5张图片

另外就是,还有一些批量方法,mybatisplus的mapper是没有的,需要我们写一个service去继承ServiceImpl<继承了父类mapper的dao, 实体类>

这样就可以使用批量方法了

在springboot中使用通用mapper与mybatisplus_第6张图片

但是我先提醒一句,批量插入,这个批量插入,底层是循环,一条一条插入的,速度可能不快!!!

你可能感兴趣的:(java日常分享,mybatisplus,通用mapper,mysql,java,数据库)