MyBatis-Plus的CRUD测试

Mybatis-Plus(CRUD)

1.导入依赖
<!-- web 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MySQL驱动 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>
<!-- 小辣椒 -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>
<!-- 测试 -->
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<scope>test</scope>
</dependency>
<!-- mybatis-plus -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.5.1</version>
</dependency>
<!-- spring测试 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
2.创建数据库student
create table student
(
    sid      int(5) auto_increment
        primary key,
    sname    varchar(20) null,
    sex      varchar(2)  null,
    age      int(3)      null,
    birthday date        null,
    hobby    varchar(10) null,
    province varchar(20) null
);
-- 插入几条数据
insert into `student` (`sid`, `sname`, `sex`, `age`, `birthday`, `hobby`, `province`) values('1','孙小鸟','男','19','2020-09-17','平时喜欢看影','湖南省');
insert into `student` (`sid`, `sname`, `sex`, `age`, `birthday`, `hobby`, `province`) values('2','黄小明','女','12','2019-09-17','平时喜欢打游戏','湖北省');
insert into `student` (`sid`, `sname`, `sex`, `age`, `birthday`, `hobby`, `province`) values('3','大黄','男','15','2022-05-19','甚','湖北省');
insert into `student` (`sid`, `sname`, `sex`, `age`, `birthday`, `hobby`, `province`) values('4','孙权','男','20','2022-05-12','打仗','四川省');
insert into `student` (`sid`, `sname`, `sex`, `age`, `birthday`, `hobby`, `province`) values('5','孙尚香','女','16','2022-05-12','cosplay','四川省');
insert into `student` (`sid`, `sname`, `sex`, `age`, `birthday`, `hobby`, `province`) values('6','曹老板','女','50','2022-05-19','那啥啥','湖北省');
3.编写yml配置
# 数据源配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/javaweb_db?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimeZone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
# 端口
server:
  port: 9000

# 开启mybatis日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
4.编写实体类
@TableName(value ="student")
@Data
public class Student implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer sid;//id

    private String sname;//姓名

    private String sex;//性别

    private Integer age;//年龄
 
    private Date birthday;//生日

    private String hobby;//爱好

    private String province;//address

    //省略getter/setter

}
5.编写StudentMapper和mapper.xml
// 继承BaseMapper
//BaseMapper可以使用mp封装好的一些方法
//有兴趣的可以自己研究下,下载源码会有注释
public interface StudentMapper extends BaseMapper<Student> {

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ckwQUb0U-1652959726539)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20220519191916429.png)]

<?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.lqz.springboot11mybatisplus.mapper.StudentMapper">
	//配置结果集映射
    <resultMap id="BaseResultMap" type="com.lqz.springboot11mybatisplus.pojo.Student">
            <id property="sid" column="sid" jdbcType="INTEGER"/>
            <result property="sname" column="sname" jdbcType="VARCHAR"/>
            <result property="sex" column="sex" jdbcType="VARCHAR"/>
            <result property="age" column="age" jdbcType="INTEGER"/>
            <result property="birthday" column="birthday" jdbcType="DATE"/>
            <result property="hobby" column="hobby" jdbcType="VARCHAR"/>
            <result property="province" column="province" jdbcType="VARCHAR"/>
    </resultMap>
	//sql片段
    <sql id="Base_Column_List">
        sid,sname,sex,
        age,birthday,hobby,
        province
    </sql>
</mapper>

编写6、7只是为了测试时对比,BaseMapper没有的方法可以使用IService中的方法

6.编写StudentService
//继承IService 同上BaseMapper
public interface StudentService extends IService<Student> {

}
7.编写StudentService实现类
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student>
    implements StudentService{
}
8.记得在启动类上添加包扫描
@MapperScan("com/lqz/mapper")
9.测试
@SpringBootTest
class Springboot11MybatisPlusApplicationTests {

    @Resource
    private StudentMapper studentMapper;
    @Resource
    private StudentService service;

    /**
     * 查询所有无条件
     */
    @Test
    void testSelectList() {
        List<Student> students = studentMapper.selectList(null);
        for (Student student : students) {
            System.out.println(student);
        }
    }

    /**
     * 测试模糊查询姓名
     */
    @Test
    void testQueryWrapper() {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("sname","孙");
        List<Student> students = studentMapper.selectList(queryWrapper);
        students.forEach(System.out::println);
    }

    /**
     * 根据姓名和性别查询....
     */
    @Test
    void testQueryWrapper1() {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("sname","孙").like("sex","男");
        List<Student> students = studentMapper.selectList(queryWrapper);
        students.forEach(System.out::println);
    }

    /**
     * 选择查询的字段....
     */
    @Test
    void testQueryWrapper2() {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("sname","sex","birthday");
        List<Student> students = studentMapper.selectList(queryWrapper);
        students.forEach(System.out::println);
    }

    /**
     * 查询数据总记录
     */
    @Test
    void testCount() {
        long count = service.count();
        System.out.println(count);
    }

    /**
     * 根据条件查询包含关键字的记录数
     */
    @Test
    void testCountByCondition() {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("sname","孙");
        long count = service.count(queryWrapper);
        System.out.println(count);
        System.out.println("-----------------");

        queryWrapper.notLike("sname","孙");
        long count1 = service.count(queryWrapper);
        System.out.println("count1 = " + count1);
    }

    /**
     * 根据条件查询不包含关键字的记录数
     */
    @Test
    void testCountByCondition2() {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.notLike("sname","孙");
        long count1 = service.count(queryWrapper);
        System.out.println("count1 = " + count1);
    }

    /**
     * 添加
     */
    @Test
    void testSave() {
        Student student = new Student();
        student.setSid(6);
        student.setSname("曹操");
        student.setAge(50);
        student.setBirthday(new Date());
        student.setHobby("那啥啥");
        student.setProvince("湖北省");
        int insert = studentMapper.insert(student);
        Assert.assertEquals(insert,1);
    }

    /**
     * 批量添加
     */
    @Test
    void testBatchAdd(){
        Collection<Student> collection = new ArrayList<>();
        //批量添加
        for (int i=7;i<15;i++) {
            Student student = new Student();
            student.setSid(i);
            student.setSname("皮卡丘" + i);
            student.setAge(1 + i);
            student.setBirthday(new Date());
            student.setHobby("皮卡啾");
            student.setProvince("湖北省");
            //加入集合中
            collection.add(student);
        }
        boolean b = service.saveBatch(collection);
        Assert.assertEquals(b,true);
    }

    /**
     * 按照条件批量删除
     */
    @Test
    void testDel(){
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("sname","皮卡");
        int delete = studentMapper.delete(queryWrapper);
        Assert.assertEquals(delete,8);
    }

    /**
     * mapper根据id修改
     */
    @Test
    void testUpdate() {
        Student student = new Student();
        student.setSid(6);
        student.setSname("曹老板");
        student.setSex("男");
        int i = studentMapper.updateById(student);
        Assert.assertEquals(i,1);
    }

    /**
     * service根据id修改
     */
    @Test
    void testUpdateService() {
        Student student = new Student();
        student.setSid(6);
        student.setSname("曹老板");
        student.setSex("女");
        boolean b = service.updateById(student);
        Assert.assertEquals(b,true);
    }

    /**
     * 根据条件批量修改
     */
    @Test
    void testBatchUpdate() {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("sname","皮卡");
        Student student = new Student();
        student.setSname("张三");
        boolean update = service.update(student,queryWrapper);
        Assert.assertEquals(update,true);
    }

}
10.测试结果

在这里插入图片描述

下次更新下mybatis-plus的分页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值