MyBatis-Plus快速入门

1. MyBatis-Plus基本操作

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生,简单来说通过配置自动写sql语句

内置代码生成器:采用代码或者Maven插件可以快速生成Mapper Model Service Controller

支持多种数据库:Mysql Oracle等


CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
use `mybatis_plus`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`name` varchar(30) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

因为默认使用雪花算法,所以主键使用Bigint类型的主键id

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      password: 1234
      username: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbc-url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&tinyInt1isBit=false
    url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&tinyInt1isBit=false

mybatis-plus:
#  这东西报错  config-location 和 configuration 不能同时存在
#  config-location: classpath:mybatis-config.xml
  mapper-locations: classpath:plusConfig\*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

@SpringBootTest
class DemoApplicationTests {


    @Autowired
    UserMapper userMapper;

    @Test
    public void testUserMapper(){
        //通过条件构造器查询一个List集合,若没有调价,则可以设置null为参数
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

    @Test
    public void testInsert(){
        User user = new User();
        user.setAge(1);
        user.setName("123");
        user.setEmail("daada@qq.com");
        int insert = userMapper.insert(user);
        System.out.println(insert);
    }

    @Test
    public void testUpdate(){
        //根据id进行update
        //如果填入的值为null 就不进行修改
        userMapper.updateById(new User(1L,"1@1323",1,"222@qq.com"));
    }

    @Test
    public void testDelete(){

        int i = userMapper.deleteById(1L);
        //根据写map的键值对为条件
        Map map = new HashMap();
        //对name=Shimada Yamato的行进行删除
        map.put("name","Shimada Yamato");
        userMapper.deleteByMap(map);

    }

}

上面是通用的增删改查操作

2. 通用Service

Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删 除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆。

里面提供一个ServiceImpl 实现了IService 接口,但是一般不会用service层是高度自定义化的,所以封装的ServiceImpl无法满足定制化需求 我们需要自己定义一个Service

我们需要继承ServiceImpl 并且实现自己写的Service接口,这样又能使用封装工具,又能满足定制化需求

public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

测试用例

@SpringBootTest
public class MybatisPlusServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void testGetCount(){
        //查询总记录数
        long count = userService.count();
        System.out.println(count);
        System.out.println("总记录数"+count);
        //进行批量添加
        ArrayList<User> users = new ArrayList<>();
        users.add(new User());
        users.add(new User());
        boolean b = userService.saveBatch(users);
        System.out.println(b);


    }


}

3. 常用注解

  • @TableName("user")

如果pojo/bean中的类名和数据库的名字不一样,可以通过@TableName("t_user")属性进行修改,指定数据库中的表名

mybatis-plus:
  global-config:
    db-config:
      table-prefix: 

也可以通过配置文件,设置统一的表名前缀

  • @TableId

设置其他属性作为表的主键,默认使用id作为主键,通过雪花算法进行赋值

在属性上进行标明

@TableId存在两个属性Value type

通过设置Value属性可以改变属性映射主键的名称

通过设置type属性可以改变id自增策略 Idtype为枚举类型

NONE为雪花算法 AUTO为自增

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@EqualsAndHashCode
@TableName("user")
public class User {
    @TableId(Value="uid",type=Idtype.NONE)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

  • @TableField

使用@TableField对属性所映射的字段名进行映射

  • @TableLogic

进行逻辑删除,Mybatis_Plus将设置的属性标记为被删除状态,但是数据库仍然可以看到,Mybatis_Plus的查询功能看不到

3. 条件构造器

使用条件构造器需要new 一个QueryWrapper

对QueryWrapper对象进行操作进行条件配置

@SpringBootTest
public class MybatisPlusWrapperTest {

    @Autowired
    private UserService userService;

    @Test
    public void test01(){
        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
        userQueryWrapper.like("name","a")
                .between("age",20,100)
                .isNotNull("email").orderByAsc("age");
        List<User> list = userService.list(userQueryWrapper);
        list.forEach(System.out::println);

    }
    @Test
    public void test02(){
        QueryWrapper<User> userQueryWrapper = new QueryWrapper<User>();
        userQueryWrapper.ge(true,"age",900);
        List<User> list = userService.list(userQueryWrapper);
        list.sort(new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                return o1.getAge()-o2.getAge();
            }
        });
        list.forEach(System.out::println);
    }

    @Test
    public void test03(){
        String name = "Sun Jiehong";
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.like(StringUtils.isNotBlank(name),User::getName,"Sun");
        List<User> list = userService.list(lambdaQueryWrapper);
        System.out.println(list);


    }


}

4. 分页查询

  • 配置分页拦截器
@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}
  • 进行查询
@SpringBootTest
public class MybatisPlusPlugins {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void test01(){
        Page<User> Page = new Page<User>(2,3);

        Page<User> userPage = userMapper.selectPage(Page, null);
        System.out.println(userPage.getPages());
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis-Plus是一个基于MyBatis的增强工具,提供了一种简化开发的方式。相比于MyBatis,MyBatis-Plus在持久层代码的编写中提供了更多的便利功能,使得开发人员能够更加高效地完成数据库操作。 要下载MyBatis-Plus快速入门文档,有以下几种方式: 1. 官方网站:MyBatis-Plus的官方网站(https://baomidou.com/)上提供了详细的文档和教程资源,包括快速入门文档。在官网上,你可以找到快速入门文档的下载链接,并根据自己的需要进行下载。 2. GitHub:MyBatis-Plus的项目在GitHub上有一个仓库,地址是(https://github.com/baomidou/mybatis-plus)。在该仓库中,你可以找到各种文档和示例代码。在仓库的README文件中,会提供快速入门文档的链接,你可以直接点击链接下载文档。 3. 知识分享平台:如CSDN、简书、博客园等,有很多博主或开发者会分享自己的经验和学习心得,包括MyBatis-Plus快速入门文档。你可以在这些平台上进行搜索,找到适合自己的教程并下载学习。 不论你选择哪一种方式下载MyBatis-Plus快速入门文档,建议你在学习前先了解一些基础的MyBatis知识,这样能更好地理解和应用MyBatis-Plus框架的功能。祝你学习顺利! ### 回答2: 要下载MyBatis-Plus快速入门文档,可以按照以下步骤进行: 1. 打开浏览器,进入MyBatis-Plus官方网站(https://mp.baomidou.com/)。 2. 在网页顶部的菜单栏中,找到并点击“文档”选项。 3. 进入文档页面后,可以看到各个版本的文档列表。根据自己使用的MyBatis-Plus版本,选择相应的文档版本。 4. 点击选择的文档版本,进入该版本的文档页面。 5. 在文档页面中,可以看到各个章节的内容。浏览页面找到“快速入门”章节。 6. 点击“快速入门”章节,即可查看该章节的详细内容。 7. 如果需要将文档保存到本地,我们可以进行以下操作:选中文档内容,右键点击“复制”或者使用快捷键Ctrl+C,将内容复制到剪贴板中。 8. 打开文本编辑器(例如记事本、Word等),粘贴剪贴板中的内容(右键点击“粘贴”或使用快捷键Ctrl+V)。 9. 保存文件,选择保存路径并命名文档文件。 通过以上步骤,您就可以成功下载MyBatis-Plus快速入门文档并保存到本地了。希望这个回答对您有帮助。 ### 回答3: 要下载MyBatis-Plus快速入门文档,可以按照以下步骤进行操作: 1. 打开浏览器,进入MyBatis-Plus官方网站(https://mp.baomidou.com/)。 2. 在页面上方的菜单栏中,可以看到一个名为“文档”的选项,鼠标悬停在上面。 3. 在弹出的下拉菜单中,选择“快速入门”。 4. 进入快速入门页面后,可以看到文档的内容。 5. 如果需要下载文档,可以找到页面上方的一个名为“下载PDF”的按钮,点击它。 6. 浏览器会开始下载一个PDF文件,即MyBatis-Plus快速入门文档。 7. 下载完成后,可以在浏览器的下载目录中找到该文件。 8. 双击打开文件,即可查看和学习MyBatis-Plus快速入门内容。 通过以上步骤,你可以成功下载并使用MyBatis-Plus快速入门文档,帮助你更好地理解和使用这个框架。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值