文章目录
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> {
}
<?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的分页