MyBatis-Plus入门

首先可以给大家推荐一下MyBatis-Plus的官网:简介 | MyBatis-Plus (baomidou.com)icon-default.png?t=N7T8https://baomidou.com/pages/24112f/一、新建一个项目:

然后就可以自动生成pom.xml里面的依赖。如果依赖不够,需要其他的依赖,可参考以下依赖代码:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>


        <!--代码生成器-->
        <dependency><!-- mybatis-plus代码生成器 -->
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <!-- 模板引擎 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <!--阿里巴巴数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.15</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

二、在resources中创建yml文件。

注意application.yml文件前面的图标形状像叶子,如果不是就要改变。 

在yml文件中写数据(以下代码只是举例) :

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://demo1?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
      password: 123456
      username: root

main:
  banner-mode: off  # 关闭SpringBoot启动图标(banner)

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL到控制台
  global-config:
    banner: off  # 关闭mybatisplus启动图标

注意,在冒号后面需要空一格,代码才能正常使用。上面的代码,第一个带入的是数据库,需要修改成自己的数据库名称和密码。

三、基于MyBatis实现数据的增删改查:

1、删除的五种方法

(1)、根据主键id删除数据(直接传id)

int count = userMapper.deleteById(9L);
System.out.println("删除了:"+ count);

(2)、根据主键id删除数据(传实体类)

User user = new User();
user.setId(8L);
int count = userMapper.deleteById(user);
System.out.println("删除了:"+ count);

(3)、根据主键id批量删除数据

List<Long> ids = new ArrayList<>();
ids.add(1L);
ids.add(2L);
delete from user where id in (1,2);
userMapper.deleteBatchIds(ids);

(4)通过构造wrapper构造器删除

QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("name","xiaoming1");
wrapper.eq("age",11);
//
delete from user where (name="xiaoming1" and age = 11);
userMapper.delete(wrapper);
// lambda表达式
userMapper.delete(new QueryWrapper<User>()
               .lambda()
               .eq(User::getName, "xiaoming1")
               .eq(User::getAge,11)
      );

(5)、使用map设置条件删除

 Map<String, Object> col = new HashMap<>();
       col.put("name","xiaoming2");
       col.put("age",12);

       int count = userMapper.deleteByMap(col);
       System.out.println("删除了:" + count);

2、插入数据的三种方法:

(1)、使用mapper层查询数据,在mapper中只封装了insert()方法

User user = new User();
        user.setAge(10);
        user.setGender(1);
        user.setName("xiaoming");
        userMapper.insert(user);
        Long id = user.getId();
        System.out.println("id:" + id);

(2)、伪批量插入:saveBatch()

List<User> userList = new ArrayList<>();
        for (int i =1;i<5;i++){
            User user1 = new User();
            user1.setAge(10+ i);
            user1.setGender(1 + i);
            user1.setName("xiaoming" + i);
            userList.add(user1);
        }
        boolean isSuccess = userService.saveBatch(userList);
        Long id = user.getId();
        System.out.println("返回结果:"+isSuccess );

(3)、批量保存或者更新

List<User> userList = new ArrayList<>();
        for (int i =3;i<10;i++){
            User user1 = new User();
            user1.setAge(10+ i);
            user1.setGender(1 + i);
            user1.setName("xiaoming" + i);
            userList.add(user1);
        }
        boolean isSuccess = userService.saveOrUpdateBatch(userList);
        System.out.println("返回结果:"+isSuccess );

3、修改(更新)数据:

// mapper层
        User user = User.builder()
                .name("xiaoxiaoming")
                .id(5L)
                .gender(0)
                .build();
        int count = userMapper.updateById(user);
        System.out.println("更新了:" + count);
// 通过wrapper进行更新
        User user = User.builder().name("hahah").gender(0).build();
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper.eq("age",13);
        int count = userMapper.update(user,userUpdateWrapper);
// service层
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper.set("name","xixix");
        userUpdateWrapper.eq("id",5L).eq("age",13);
        userService.update(userUpdateWrapper);

4、查询数据的

(1)、mapper层,根据 id查询数据

User user = userMapper.selectById(5L);
System.out.println(user.toString());

(2)、通过构造wrapper条件查询一条数据

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 设置查询字段;仅查询name id字段
queryWrapper.select("id","name");
// 添加查询条件
queryWrapper.eq("id",6L);
User user1 = userMapper.selectOne(queryWrapper);
System.out.println(user1.toString());

(3)、根据id批量查询

List<User> userList = userMapper.selectBatchIds(Arrays.asList(5L,6L,7L));

(4)、通过Wrapper组装查询条件,查询全部数据

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//设置查询字段;仅查询name id字段
queryWrapper.select("id","name");
// 添加查询条件
queryWrapper.eq("age",30);
List<User> users = userMapper.selectList(queryWrapper); // 查询全部数据

(5)、根据columnMap设置查询条件

Map<String,Object> colMap = new HashMap<>();
colMap.put("name","xixix");
colMap.put("age",13);
select * from user where name="xixix" and age=13;
List<User> userList1 = userMapper.selectByMap(colMap); // 使用map构造查询

(6)根据wrapper条件,查询记录总数

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","xixi").eq("age",13);
long count = userMapper.selectCount(queryWrapper); // 获取总量

(7)、service层

 User user = userService.getById(5L); // 根据id获取数据
// 通过Wrapper条件查询一条数据,当结果出现多条数据是会抛出异常
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","xixi").eq("id",5L);
// select * from user where id= 5 and name = "xixi"
User user1 = userService.getOne(queryWrapper);

(8)、通过list开头的方法来查询多条数据

// 条件查询
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","xixi").eq("id",5L);
//select * from user where id= 5 and name = "xixi"
List<User> users = userService.list(queryWrapper);

// 根据id列表查询数据
//select * from user where id in(5,6)
List<User> userList = userService.listByIds(Arrays.asList(5L,6L));

// 通过map构造查询条件
Map<String,Object> cloMap = new HashMap<>();
cloMap.put("name","xixi");
cloMap.put("age",13);
//select * from user where age= 5 and name = "xixi"
List<User> userList1 = userService.listByMap(cloMap);

(9)、获取查询总数

QueryWrapper<User> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("name","xixi").eq("id",5L);
userService.count(queryWrapper1);  // 获取插叙总数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值