目录
3.1.3.application.properties配置文件
3.1.5.创建实体类Student.java , Clazz.java
1. springboot整合mybatis
数据库:
(1)依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>springboot02</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot02</name> <description>springboot02</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--mysql的驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--mybatis启动依赖:DataSourceAutoConfiguration:读取application配置文件中以spring.datasource --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
(2)配置文件
#数据源信息 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # characterEncoding防止您添加到数据的数据出现乱码。 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai&characterEncoding=UTF8 spring.datasource.username=root spring.datasource.password=123456789 #指定mybatis映射文件的路径 classpath编译后的路径 mybatis.mapper-locations=classpath:mapper/*.xml #控制台打印sql日志 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
(3)创建实体类和dao接口
@Data public class Dept { private Integer id; private String name; }
@Mapper public interface DeptDao { public List<Dept>findAll(); }
mapper下的xml文件
<?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"> <!--namesapce的内容必须和对应的接口路径映射--> <mapper namespace="com.wqg.dao.DeptDao"> <!--查询所有--> <select id="findAll" resultType="com.wqg.pojo.Dept"> select * from dept </select> </mapper>
(4)主启动类上添加@MapperScan或者dao接口上添加@Mapper
@SpringBootApplication public class Springboot02Application { public static void main(String[] args) { SpringApplication.run(Springboot02Application.class, args); } }
(5)测试
@SpringBootTest(classes = Springboot02Application.class) class Springboot02ApplicationTests { @Autowired private DeptDao deptDao; //如果无法注入DeptDao的对象。[spring容器中没有dao接口的代理实现类] @Test void contextLoads() { List<Dept> all = deptDao.findAll(); System.out.println(all); } }
2.springboot整合pageHelper
(1)依赖
<!--pageHelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.6</version> </dependency>
(2)测试
@Test void contextLoads() { PageHelper.startPage(1,1); List<Dept> all = deptDao.findAll(); //把查询的结果封装到PageInfo中 PageInfo<Dept> pageInfo=new PageInfo<>(all); System.out.println("总页数:"+pageInfo.getPages()); System.out.println("总条数:"+pageInfo.getTotal()); System.out.println("当前页的记录:"); List<Dept> list = pageInfo.getList(); list.stream().forEach(System.out::println); }
3.综合案例=学生表CRUD(Postman测试结果)
3.1完成查询所有
3.1.1.创建springboot项目
略...(详见上篇文章)
3.1.2.导入依赖 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>springboot03</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot03</name> <description>springboot03</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!--pageHelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.1</version> </dependency> <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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <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> </project>
3.1.3.application.properties配置文件
#数据源信息 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # characterEncoding防止您添加到数据的数据出现乱码。 spring.datasource.url=jdbc:mysql://localhost:3306/qy165ssm?serverTimezone=Asia/Shanghai&characterEncoding=UTF8 spring.datasource.username=root spring.datasource.password=123456789 #指定mybatis映射文件的路径 classpath编译后的路径 mybatis.mapper-locations=classpath:mapper/*.xml #控制台打印sql日志 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3.1.4.数据库准备
班级表:class 学生信息表:student
3.1.5.创建实体类Student.java , Clazz.java
@Data //学生信息表 public class Student { private Integer sid; private String sname; private Integer age; private String sex; private Integer class_id; private String headImg="https://aaa165.oss-cn-beijing.aliyuncs.com/wz.jpg"; //随便填一个照片路径,目前用于测试 private Clazz clazz; } @Data //班级表 public class Clazz { private Integer cid; private String cname; }
3.1.6.创建dao接口 StudentDao.java
@Mapper public interface StudentDao { //查询所有 List<Student> selectAll(); }
3.1.7.创建Student.xml
<?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"> <!--namesapce的内容必须和对应的接口路径映射--> <mapper namespace="com.wqg.dao.StudentDao"> <!--查询所有--> <select id="selectAll" resultType="com.wqg.pojo.Student"> select s.sid , s.sname , s.age , s.sex , s.class_id , s.headImg, c.cid, c.cname from student s join class c on s.class_id = c.cid </select> </mapper>
3.1.8.创建业务层
StudenService.java接口及StudentServiceImpl.java
public interface StudentService { //查询所有 List<Student> selectAll(); } @Service public class StudentServiceImpl implements StudentService { @Autowired private StudentDao studentDao; //查询所有 @Override public List<Student> selectAll() { return studentDao.selectAll(); } }
3.1.9.创建Result.java
@NoArgsConstructor @AllArgsConstructor @Data public class Result { //表示状态码 private Integer code; //消息提示 private String msg; //响应的数据内容 private Object data; }
3.1.10.Controller层
创建StudentController.java
@RestController @RequestMapping("student") public class StudentController { @Autowired private StudentService studentService; //查询所有 @RequestMapping("all") public Result StudentAll() { List<Student> studentList = studentService.selectAll(); if (studentList.size() == 0) { return new Result(500, "查询所有失败", null); } return new Result(200, "查询所有成功", studentList); } }
3.1.11.使用Postman测试
3.2.完成所有
增--删--改--根据id查--分页条件查
3.2.1创建StudentVo.java
//接收前端学生的搜索条件对象 @Data public class StudentVo { private String sname; private Integer class_id; }
3.2.2.StudentDao.java
// 增 public Integer add(Student student); // 删 public Integer delete(Integer id); // 改 public Integer update(Student student); // 根据id查 public Student selectById(Integer id); //分页条件查 List<Student> selectByCondition(StudentVo studentVo);
3.2.3.StudentDao.xml
<!--增--> <insert id="add"> insert into student values (null, #{sname}, #{age}, #{sex}, #{class_id}, #{headImg}); </insert> <!--删--> <delete id="delete"> delete from student where sid = #{sid} </delete> <!--改--> <update id="update"> update student set sname=#{sname}, age=#{age}, sex=#{sex}, class_id=#{class_id}, headImg=#{headImg} where sid = #{sid} </update> <!--根据id查--> <select id="selectById" resultType="com.wqg.pojo.Student"> select sid, sname, age, sex, class_id, headImg from student where sid = #{sid} </select> <!--分页条件查--> <select id="selectByCondition" resultType="com.wqg.pojo.Student"> select s.sid, s.sname, s.age, s.sex, s.class_id, s.headImg, c.cid, c.cname from student s join class c on s.class_id = c.cid <where> <if test="sname != null and sname != ''"> and s.sname like concat ("%",#{sname},"%") </if> <if test="class_id != null"> and class_id =#{class_id} </if> </where> </select>
3.2.4.StudentService.java
// 增 public Integer add(Student student); // 删 public Integer delete(Integer id); // 改 public Integer update(Student student); // 根据id查 public Student selectById(Integer id); //分页条件查 PageInfo<Student> selectByCondition(Integer currentPage , Integer pageSize , StudentVo studentVo);
3.2.5.StudentServiceImpl.java
//增 @Override public Integer add(Student student) { return studentDao.add(student); } //删 @Override public Integer delete(Integer id) { return studentDao.delete(id); } //改 @Override public Integer update(Student student) { return studentDao.update(student); } //根据id查 @Override public Student selectById(Integer id) { return studentDao.selectById(id); } //分页条件查 @Override public PageInfo<Student> selectByCondition(Integer currentPage, Integer pageSize, StudentVo studentVo) { PageHelper.startPage(currentPage,pageSize); List<Student> a = studentDao.selectByCondition(studentVo); PageInfo<Student> pageInfo = new PageInfo<>(a); return pageInfo ; }
3.2.6.StudentController.java
// 增 @PostMapping("add") public Result add(@RequestBody Student student) { Integer add = studentService.add(student); return add > 0 ? new Result(200, "增加成功", null) : new Result(500, "增加失败", null); } // 删 @DeleteMapping public Result delete(Integer id) { Integer delete = studentService.delete(id); return delete > 0 ? new Result(200, "删除成功", null) : new Result(500, "删除失败", null); } // 改 @PutMapping public Result update(@RequestBody Student student) { Integer update = studentService.update(student); return update > 0 ? new Result(200, "修改成功", null) : new Result(500, "修改失败", null); } // 根据id查 @GetMapping public Result selectById(Integer id) { Student student = studentService.selectById(id); return new Result(200, "根据id查询成功", student); } //分页条件查 @PostMapping("selectByCondition") public Result selectByCondition(Integer currentPage, Integer pageSize, @RequestBody StudentVo studentVo) { PageInfo<Student> pageInfo = studentService.selectByCondition(currentPage, pageSize, studentVo); return new Result(200, "分页条件查询成功", pageInfo); }
3.2.7.使用Postman测试
增
删
改
根据id查
分页条件查询
全部包:
综合案例测试完成...