Mybatis-plus

学习 Mybatis-plus

Mybatis-plus官网

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
可以在不编写任何sql语句的情况下,快速的是实现对单表的crud,批量,逻辑删除,分页等操作

mybatis-plus功能

测试建表示例

基本方法

alt

简单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 : 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了 参考博客

全部评论

相关推荐

点赞 评论 收藏
转发
头像
04-09 14:29
Java
点赞 评论 收藏
转发
感觉这一周太梦幻了,就像一个梦,很不真实~~~感觉这个暑期,我的运气占了99成,实力只有百分之一4.15上午&nbsp;腾讯csig&nbsp;腾讯云部门,面完秒进入复试状态4.16下午&nbsp;美团优选供应链部门,4.18上午发二面4.17晚上&nbsp;阿里国际一面,纯拷打,面完我都玉玉了4.18下午&nbsp;阿里国际二面,是我们leader面的我,很轻松~~4.18晚上&nbsp;约了hr面4.19上午&nbsp;hr面,下午两点口头oc4.19晚上&nbsp;意向书说起来我的暑期好像一次都没挂过~~~~~难道我是天生面试圣体?----------------------------------------------------------------------六个月前,我还是0项目0刷题,当时想的是先把论文发出来再去找实习。结果一次组会,老师打破了我的幻想(不让投B会,只让投刊或者A)我拿头投啊!!!然后就开始物色着找实习,顺便做完了mit的6.s081,但是基本上还是没刷过题目-----------------------------------------------------------------------11月&nbsp;&nbsp;一次偶然的机会,面进了某个耳机厂的手环部门,大概是做嵌入式的,用的是CPP。12月&nbsp;莫名其妙拿到了国创的面试机会,0基础四天速成java基础!居然也给我面过了hhhhh,可能是面试没写题吧入职国创后的几个月,一直没活,天天搁那看剧,都快忘了还有暑期实习这回事了~~~~命运的齿轮在2.26开始转动,因为这一天美团开了,我开始慌了,因为那时的我什么都不会。lc,八股,sql全部是0进度。然后就开始了女娲补天,上班刷题,下班继续做之前的开源,顺便学一学八股。3月到现在,lc也刷到快200了,一天最多提交了47次~~~~~~~~~~八股根据别人的面经总结和博客,写了快十万字的笔记~~~~~~~~~~简历上的实习经历和开源,也努力去深挖了,写了几万字的记录~~~~~~所以面试的时候,基本上都能cover了,面试官问到的基础基本都会,不基础的我就把他往我会的地方引。结果好像还不错,基本上每个面试官评价都挺好的emmmmmmmm
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务