1.依赖

pom.xml
mybatis-plus版本和springboot版本没啥大关系,几乎随便搞

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.9</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>

2.配置

application.yml

spring: 
  datasource:
    url: jdbc:mysql://10.0.0.0:3306/mgj?useSSL=false&characterEncoding=UTF8
    username: root
    password: 111111
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 下面为连接池的补充设置,应用到上面所有数据源中
      # 初始化大小,最小,最大
      initial-size: 15
      min-idle: 15
      max-active: 50
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000 
#mybatis plus 设置
mybatis-plus:
  #  **  代表多级  *代表一级
  mapper-locations: classpath*:com/modules/**/xml/*Mapper.xml
  global-config:
    # 关闭MP3.0自带的banner
    banner: false
    db-config:
      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
      id-type: 4
      # 默认数据库表下划线命名
      table-underline: true
  configuration:
     #这个配置会将执行的sql打印出来,在开发或测试的时候可以用,正式环境需要注释,可以在log日志里打印出来
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3.分页config

@Configuration
@MapperScan({com.digua.mapper})
public class MyBatisPlusConfig {
     
    /*  旧版本配置
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }*/
 
    /**
	  * 3.4版本需要改成这种分页
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
 }

4.代码生成

mybatis-plus Generator 一键快速生成代码

5.各层介绍

数据库表结构

CREATE TABLE `users` (
  `name` varchar(10) NOT NULL COMMENT '名字',
  `age` varchar(2) DEFAULT NULL COMMENT '年龄'
  PRIMARY KEY (`name`)
) 

5.1 entity 基本类

//请注意我使用了lombok
@Data
@TableName("users")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value="users对象")
public class Users extends BaseEntity{
	@TableId(type = IdType.UUID)
	private String name;
	//这里是ageaaa  我们数据库是age  我们可以使用这个注解进行持久化时替换
	@TableField(value = "age")
	private Integer ageaaa;
	//比如我们数据库没有这个字段  可以我们需要在一些业务类里用到  那我们可以使用这个取消持久化
	@TableField(exist = false)
	private Son[] SonList;
}

5.1.1 实体类注解

@TableName
value 表名
-------------------------------------------------
@TableId
value 字段名
IdType  主键生成类型
        AUTO(0), 自增
	    NONE(1), 未设置主键
	    INPUT(2), 用户自定义
	    ASSIGN_ID(3),  雪花算法id
	    ASSIGN_UUID(4) 雪花算法uuid
-------------------------------------------------
@TableField
value  字段名
jdbcType 与数据库对应的类型
insertStrategy  新增过滤
updateStrategy  修改过滤
            IGNORED,  所有的都更新
		    NOT_NULL,  不为null时更新
		    NOT_EMPTY,  不为null、不为空时更新
		    DEFAULT,  默认NOT_EMPTY
		    NEVER;  从不更新
-------------------------------------------------
@TableLogic  逻辑删除,添加上后,delete 变成 update		    

5.2 mapper

public interface UsersMapper extends BaseMapper<User> {
	List<Users> pageList(@Param("page") Page<Users> page,@Param("users") Users users);
}

5.2 .1 mapper.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/modules/mapper/UsersMapper">
	<select id = "pageList" resultType = "com.modules.entity.Users">
		select *from users where age = #{users.age}
	</select>
</mapper>

5.3 service

public interface UserService extends IService<User> {}

5.3.1 serviceImpl

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
	//返回集合信息
	public void searchList(){
        List<Users> userList = this.list(new QueryWrapper<Users>().eq("age","12"));
    }
    //返回一条信息
	public void searchOne(){
        Users users= this.getById("id");
    }
    //返回分页信息
	public void searchPage(){
	    int page = 1;
	    int size = 10;
	    Page<User> page = new Page<>(page,size);
	    QueryWrapper<Users> queryWapper = new QueryWrapper<Users>();
        Page<Users> usersPage = this.page(page,queryWapper);
    }
     //返回自定义分页查询
	public void searchPageList(){
	    int page = 1;
	    int size = 10;
	    Page<User> page = new Page<>(page,size);
	    Users users = new Users();
	    users.setAge(12);
	    //从mapper里边定义
        Page<Users> usersPage = this.baseMapper.pageList(page,users);
    }
    //修改数据
	public void updateOne(){
        boolean type = this.update(new UpdateWrapper<Users>().set("age","22").eq("name","id"));
        boolean type2 = this.updateById(new User("id",22));
    }
    //修改或添加多条
    public void updateBatch(){
        List<Users> userList = new ArrayList<>();
    	boolean type = this.saveOrUpdateBatch(userList);
    }
    //删除信息
	public void deleteOne(){
        this.removeById("id");
        this.remove(new QueryWrapper<Users>().eq("age",12));
        this.removeByIds(Arrays.asList("id1","id2"));
    }
     //返回一条信息
	public void save(){
        this.save(new User("id",22));
        List<Users> userList = new ArrayList<>();
        this.saveBatch(userList);
    }
    //.................余下省略........................
    
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐