springboot和mybatisplus

1、springboot是什么?

springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVC+Spring+Mybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起,而springboot抛弃了繁琐的xml配置过程,采用大量默认的配置来简化我们的spring开发过程。

SpringBoot化繁为简,使开发变得更加的简单迅速。

2、Spring Boot 具有以下特点:

1)独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java –jar xx.jar” 即可运行。

2)内嵌 Servlet 容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。

3)提供 starter 简化 Maven 配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。

4)提供了大量的自动配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。

5)自带应用监控

Spring Boot 可以对正在运行的项目提供监控。

7)无代码生成和 xml 配置

Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

3、如何学习SpringBoot

SpringBoot官方文档

Spring Boot Reference Documentation

4、MyBatisPlus简介

MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生

5、MyBatisPlus特性

1)无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

2)损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

3)强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

4)支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

5)支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

6)支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

7)支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

8)内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

9)内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

10)分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

11)内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

12)内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

6、Mybatis-plus核心注解

1)@TableName

  • 描述:表名注解,标识实体类对应的表

  • 使用位置:实体类

属性描述
value表名
keepGlobalPrefix是否保持使用全局的 tablePrefix 的值(当全局 tablePrefix 生效时)
resultMapxml 中 resultMap 的 id(用于满足特定类型的实体类对象绑定)

2)@TableId

  • 描述:主键注解

  • 使用位置:实体类主键字段

属性默认值描述
value""主键字段名
typeIdType.NONE制定主键类型

3)@TableField

  • 描述:字段注解(非主键)

属性默认值描述
value""主键字段名
existtrue是否为数据库表字段
condition""字段 where 实体查询比较条件,有值设置则按设置的值为准,没有则为默认全局的 %s=#{%s}
update""字段 update set 部分注入,例如:当在version字段上注解update="%s+1" 表示更新时会 set version=version+1 (该属性优先级高于 el 属性)

4)@KeySequence

  • 描述:序列主键策略 oracle

  • 属性:value、dbType

属性默认值描述
value""序列名
dbTypeDbType数据库类型,未配置默认使用注入 IKeyGenerator 实现,多个实现必须指定
7、Mybatis-plus增删改查

1)插入

@Test
    public void testInsert() {
        User user = new User(null, "张三", 23, "zhangsan@atguigu.com");
        int insert = userMapper.insert(user);
        System.out.println("受影响的行数:" + insert);
        System.out.println("id自动获取的值:" + user.getId());
    }

2)删除

2.1通过id删除

@Test
    public void testDelete() {
//        User user = new User(null, "张三", 23, "zhangsan@atguigu.com");
        int deleteById = userMapper.deleteById(1684852328060022785L);
        System.out.println("受影响的行数:" + deleteById);
    }
​

2.2通过id批量删除

 @Test
    public void testDeleteBatchIds() {
//        User user = new User(null, "张三", 23, "zhangsan@atguigu.com");
        List<Long> asList = Arrays.asList(1L, 2L, 3L);
        int deleteById = userMapper.deleteBatchIds(asList);
        System.out.println("受影响的行数:" + deleteById);
    }
​

3)修改

@Test
    public void testUpdateById() {
        User user = new User(4L, "admin", 22, null);
//        HashMap<String, Object> map = new HashMap<>();
        int deleteById = userMapper.updateById(user);
        System.out.println("受影响的行数:" + deleteById);
    }
​

4)查询

4.1查询所有数据

@Test
    public void testSelectList() {userMapper.selectList(null).forEach(System.out::println);}
​

4.2通过id查询

 @Test
    public void testSelectById() {
//        User user = new User(null, "张三", 23, "zhangsan@atguigu.com");
        User user = userMapper.selectById(4L);
        System.out.println("user = " + user);
    }
​

4.3通过map条件查询

@Test
    public void testSelectByMap() {
//        User user = new User(null, "张三", 23, "zhangsan@atguigu.com");
        HashMap<String, Object> map = new HashMap<>();
        map.put("name", "admin");
        map.put("age",23);
        List<User> users = userMapper.selectByMap(map);
        for (User user : users) {
            System.out.println("user = " + user);
        }
    }
​

4.4通过多个id进行条件查询

 @Test
    public void testSelectBatchIds() {
//        User user = new User(null, "张三", 23, "zhangsan@atguigu.com");
        List<Long> asList = Arrays.asList(2L, 3L, 4L);
        List<User> users = userMapper.selectBatchIds(asList);
        for (User user : users) {
            System.out.println("user = " + user);
        }
    }
​

4.5通用Service

创建Service接口和实现类

public interface UserService extends IService<User> {}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}
--------------------------------------
   @Autowired
    private UserService userService;
​
    @Test
    public void testGetCount() {
        long count = userService.count();
        System.out.println("总记录数为:" + count);
    }
​

4.6批量插入

    @Test
    public void testSaveBatch() {
        ArrayList<User> users = new ArrayList<>();
​
        for (int i = 0; i < 5; i++) {
            User user = new User();
            user.setName("abc" + i);
            user.setAge(21 + i);
            users.add(user);
        }
        userService.saveBatch(users);
    }
​
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值