学习 Mybatis-plus
MyBatis-Plus (opens new window)(
简称 MP
)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。可以在不编写任何sql语句的情况下,快速的是实现对单表的crud,批量,逻辑删除,分页等操作
基本方法
简单demo实操
新建一个springboot项目 添加以下依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
配置数据源
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3308/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: admin
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
编写Mapper接口
package cn.js.ccit.dmp.mapper;
import cn.js.ccit.dmp.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* @InterfaceName : UserMapper
* @Description : 编写接口
* @Author : CodeHaywire
* @Created at 2022/3/29 16:31
*/
//将一个接口或类注册成持久层对象 解决Autowired的问题
@Repository
public interface UserMapper extends BaseMapper<User> {}
启动类添加东西
package cn.js.ccit.dmp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author CodeHaywire
*/
@SpringBootApplication
//扫描mapper接口所在的包 【加这个】
@MapperScan("cn/js/ccit/dmp/mapper")
public class DmpApplication {
public static void main(String[] args) {
SpringApplication.run(DmpApplication.class, args);
}
}
新建实体类
package cn.js.ccit.dmp.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName : User
* @Description : TODO
* @Author : CodeHaywire
* @Created at 2022/3/29 16:24
*/
@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
测试
package cn.js.ccit.dmp;
import cn.js.ccit.dmp.mapper.UserMapper;
import cn.js.ccit.dmp.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
/**
* @ClassName : MybatisPlusTest
* @Description : TODO
* @Author : CodeHaywire
* @Created at 2022/3/29 16:43
*/
@SpringBootTest
public class MybatisPlusTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelectList(){
//无查询条件就填null
// List<User> users = userMapper.selectList(null);
//遍历数据
// users.forEach(System.out::println);
// User user = userMapper.selectById("1");
// System.out.println(user.getName());
//添加数据
User user = new User();
user.setName("张三");
user.setAge(23);
user.setEmail("zhanshan@qq.com");
int result = userMapper.insert(user);
System.out.println("result:"+result);
System.out.println("id:"+user.getId());
}
}
Console :
映射规则
表
默认情况下,mybatis-plus
会把表名转驼峰
命名的方式进行匹配,比如库表sys_user
对应实体SysUser
主键
实体类主键属性上使用注解@TableId
默认ASSIGN_ID
/**
* 用户ID
*/
@TableId(value = "user_id",type = IdType.AUTO)
private Long userId;
AUTO
:自增主键,仅在数据库设置主键自增的情况下有效
INPUT
:insert之前自己设置主键
NONE
:未设置主键类型,
ASSIGN_ID(默认策略)
: 雪花算法,使用该策略主键类型为Long,String,可以保证分布式系统中主键不重复
ASSIGN_UUID
: 唯一 UUID
字段属性
默认情况下mybatis-plus
是开启了字段
和列名
的驼峰
转换
Tip : 启动类加上
@MapperScan("com.example.demo.mapper")就已经注入spring容器了mapper接口不需要使用@Component了
参考博客