最近正在集成SpringBoot与MyBatis-plus,体验感很好啊

打印 上一主题 下一主题

主题 908|帖子 908|积分 2724


sql
  1. CREATE TABLE `class` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  3.   `name` varchar(30) DEFAULT NULL COMMENT '班级名',
  4.   `floor` int(3) DEFAULT NULL COMMENT '楼层',
  5.   `teacher_id` int(11) DEFAULT NULL COMMENT '老师编号(FK)',
  6.   PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='班级信息表';
  8. INSERT INTO `class` VALUES ('1', '1年级2班', '4', '2');
  9. INSERT INTO `class` VALUES ('2', '1年级3班', '4', '2');
  10. INSERT INTO `class` VALUES ('3', '2年级1班', '1', '4');
  11. INSERT INTO `class` VALUES ('4', '2年级2班', '2', '5');
  12. INSERT INTO `class` VALUES ('5', '2年级3班', '3', '6');
  13. INSERT INTO `class` VALUES ('6', '3年级1班', '4', '7');
  14. INSERT INTO `class` VALUES ('7', '3年级2班', '1', '8');
  15. INSERT INTO `class` VALUES ('8', '3年级3班', '2', '9');
  16. INSERT INTO `class` VALUES ('9', '4年级1班', '3', '10');
  17. INSERT INTO `class` VALUES ('10', '4年级2班', '4', '11');
  18. INSERT INTO `class` VALUES ('11', '4年级3班', '1', '12');
  19. INSERT INTO `class` VALUES ('12', '5年级1班', '2', '13');
  20. INSERT INTO `class` VALUES ('13', '5年级3班', '4', '15');
  21. INSERT INTO `class` VALUES ('14', '6年级2班', '2', '17');
  22. INSERT INTO `class` VALUES ('15', '6年级3班', '3', '18');
  23. INSERT INTO `class` VALUES ('16', '1年级4班', '4', '99');
  24. INSERT INTO `class` VALUES ('17', '2年级4班', '2', '99');
  25. INSERT INTO `class` VALUES ('18', '3年级4班', '1', '99');
  26. INSERT INTO `class` VALUES ('19', '4年级1班', '1', '20');
  27. INSERT INTO `class` VALUES ('30', '4年级1班', '22', '20');
  28. CREATE TABLE `teacher` (
  29.   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  30.   `name` varchar(30) DEFAULT NULL COMMENT '名字',
  31.   `age` int(2) DEFAULT NULL COMMENT '年龄',
  32.   `title` varchar(30) DEFAULT NULL COMMENT '职称',
  33.   `manager` int(11) DEFAULT NULL COMMENT '上司编号(FK)',
  34.   `salary` int(6) DEFAULT NULL COMMENT '工资',
  35.   `comm` int(6) DEFAULT NULL COMMENT '奖金',
  36.   `gender` char(1) DEFAULT NULL COMMENT '性别',
  37.   `subject_id` int(11) DEFAULT NULL COMMENT '科目编号(FK)',
  38.   PRIMARY KEY (`id`)
  39. ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='老师信息表';
  40. INSERT INTO `teacher` VALUES ('1', '刘苍松', '55', '总监', '20', '10000', '5000', '男', '1');
  41. INSERT INTO `teacher` VALUES ('2', '范传奇', '33', '三级讲师', '1', '3000', null, '男', '2');
  42. INSERT INTO `teacher` VALUES ('3', '王克晶', '32', '一级讲师', '1', '8000', '3000', '女', '3');
  43. INSERT INTO `teacher` VALUES ('4', '刘国斌', '29', '二级讲师', '1', '7300', '3400', '男', '4');
  44. INSERT INTO `teacher` VALUES ('5', '成恒', '35', '三级讲师', '1', '5200', '4600', '男', '5');
  45. INSERT INTO `teacher` VALUES ('6', '张皓岚', '33', '二级讲师', '1', '7800', '700', '男', '2');
  46. INSERT INTO `teacher` VALUES ('7', '胡悦', '25', '一级讲师', '1', '9000', '2800', '女', '1');
  47. INSERT INTO `teacher` VALUES ('8', '齐雷', '45', '总监', '20', '9800', '7800', '男', '3');
  48. INSERT INTO `teacher` VALUES ('9', '王海涛', '44', '二级讲师', '8', '3100', '1200', '男', '4');
  49. INSERT INTO `teacher` VALUES ('10', '张久军', '39', '一级讲师', '8', '2000', '6000', '男', '5');
  50. INSERT INTO `teacher` VALUES ('11', '于健', '27', '二级讲师', '12', '3800', null, '男', '2');
  51. INSERT INTO `teacher` VALUES ('12', '张立志', '34', '总监', '20', '13000', '900', '男', '3');
  52. INSERT INTO `teacher` VALUES ('13', '吴华', '46', '总监', '20', '8700', '6900', '男', '5');
  53. INSERT INTO `teacher` VALUES ('14', '李大帅', '29', '三级讲师', '13', '7000', null, '男', '1');
  54. INSERT INTO `teacher` VALUES ('15', '田浩', '26', '二级讲师', '13', '5600', '1900', '男', '4');
  55. INSERT INTO `teacher` VALUES ('16', '肖旭伟', '36', '一级讲师', '12', '6800', '600', '男', '2');
  56. INSERT INTO `teacher` VALUES ('17', '张敏', '29', '三级讲师', '13', '6100', '400', '女', '3');
  57. INSERT INTO `teacher` VALUES ('18', '赵微', '26', '二级讲师', '13', '4600', '6500', '女', '4');
  58. INSERT INTO `teacher` VALUES ('19', '李源', '25', '三级讲师', '13', '6300', '0', '男', '4');
  59. INSERT INTO `teacher` VALUES ('20', '韩少云', '55', '老板', null, '1', '0', '男', null);
复制代码
pom.xml
  1.         <dependency>
  2.             <groupId>mysql</groupId>
  3.             <artifactId>mysql-connector-java</artifactId>
  4.             <version>8.0.28</version>
  5.         </dependency>
  6.                 <dependency>
  7.             <groupId>com.alibaba</groupId>
  8.             <artifactId>druid</artifactId>
  9.             <version>1.2.8</version>
  10.         </dependency>
  11.                 <dependency>
  12.             <groupId>org.projectlombok</groupId>
  13.             <artifactId>lombok</artifactId>
  14.             <version>1.18.24</version>
  15.         </dependency>
  16.                 <dependency>
  17.             <groupId>com.baomidou</groupId>
  18.             <artifactId>mybatis-plus-boot-starter</artifactId>
  19.             <version>3.5.3</version>
  20.         </dependency>
复制代码
application.yml
  1. spring:
  2.   # 数据库连接配置
  3.   datasource:
  4.     driver-class-name: com.mysql.cj.jdbc.Driver
  5.     type: com.alibaba.druid.pool.DruidDataSource
  6.     url: jdbc:mysql://localhost:3306/hedu?useSSL=false&serverTimeZone=Asia/Shanghai
  7.     username: root
  8.     password: root
  9. # mybatis-plus配置
  10. mybatis-plus:
  11.   mapper-locations: classpath:mappers/*.xml
  12.   configuration:
  13.     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
复制代码
Mybatis-plus的分页插件的配置
  1. package cn.highedu.boot.config;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  4. import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. @Configuration
  8. public class MybatisPlusConfig {
  9.     /**
  10.      * 分页插件的配置
  11.      * @return
  12.      */
  13.     @Bean
  14.     public MybatisPlusInterceptor paginationInterceptor(){
  15.         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  16.         /**
  17.          * DbType.XXX
  18.          * XXX 为具体的数据库类型如MYSQL,ORACLE
  19.          */
  20.         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
  21.         return interceptor;
  22.     }
  23. }
复制代码
创建基本类

Class
  1. package cn.highedu.boot.entity;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. import com.baomidou.mybatisplus.annotation.TableId;
  4. import lombok.AllArgsConstructor;
  5. import lombok.Data;
  6. import lombok.NoArgsConstructor;
  7. @Data
  8. @AllArgsConstructor
  9. @NoArgsConstructor
  10. public class Class {
  11.     @TableId(type = IdType.AUTO)
  12.     private Integer id;
  13.     private String name;
  14.     private Integer floor;
  15.     private Integer teacherId;
  16. }
复制代码
ClassMapper
  1. package cn.highedu.boot.mapper;
  2. import cn.highedu.boot.entity.Class;
  3. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4. import org.apache.ibatis.annotations.*;
  5. @Mapper
  6. public interface ClassMapper extends BaseMapper<Class> {
  7. }
复制代码
ClassService
  1. package cn.highedu.boot.service;
  2. import cn.highedu.boot.entity.Class;
  3. import com.baomidou.mybatisplus.extension.service.IService;
  4. public interface ClassService extends IService<Class> {
  5. }
复制代码
ClassServiceImpl
  1. package cn.highedu.boot.service.impl;
  2. import cn.highedu.boot.entity.Class;
  3. import cn.highedu.boot.mapper.ClassMapper;
  4. import cn.highedu.boot.service.ClassService;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import org.springframework.stereotype.Service;
  7. @Service
  8. public class ClassServiceImpl extends ServiceImpl<ClassMapper, Class> implements ClassService {
  9. }
复制代码
teacher
  1. package cn.highedu.boot.entity;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @AllArgsConstructor
  7. @NoArgsConstructor
  8. public class Teacher {
  9.     private Integer id;
  10.     private String name;
  11.     private Integer age;
  12.     private String title;
  13.     private Integer manager;
  14.     private Integer salary;
  15.     private Integer comm;
  16.     private Character gender;
  17.     private Integer subjectId;
  18. }
复制代码
TeacherMapper
  1. package cn.highedu.boot.mapper;
  2. import cn.highedu.boot.entity.Teacher;
  3. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4. import org.apache.ibatis.annotations.*;
  5. @Mapper
  6. public interface TeacherMapper extends BaseMapper<Teacher> {
  7. }
复制代码
TeacherService
  1. package cn.highedu.boot.service;
  2. import cn.highedu.boot.entity.Teacher;
  3. import com.baomidou.mybatisplus.extension.service.IService;
  4. public interface TeacherService extends IService<Teacher> {
  5. }
复制代码
TeacherServiceImpl
  1. package cn.highedu.boot.service.impl;
  2. import cn.highedu.boot.entity.Teacher;
  3. import cn.highedu.boot.mapper.TeacherMapper;
  4. import cn.highedu.boot.service.TeacherService;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import org.springframework.stereotype.Service;
  7. @Service
  8. public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements TeacherService {
  9. }
复制代码
单表操作

SingleTableOperationTest
  1. package cn.highedu.boot.service;
  2. import cn.highedu.boot.entity.Class;
  3. import cn.highedu.boot.mapper.ClassMapper;
  4. import cn.highedu.boot.service.impl.ClassServiceImpl;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import org.junit.jupiter.api.Test;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.boot.test.context.SpringBootTest;
  10. import java.util.List;
  11. @SpringBootTest
  12. class ClassServiceTest  extends ClassServiceImpl {
  13.     @Autowired
  14.     private ClassMapper classMapperSimple;
  15.     //基本操作
  16.     //insert
  17.     /**
  18.      * 新增一条记录
  19.      */
  20.     @Test
  21.     void simpleAddOne(){
  22.         Class addOneClazz = new Class();
  23.         addOneClazz.setName("4年级1班");
  24.         addOneClazz.setFloor(22);
  25.         addOneClazz.setTeacherId(20);
  26.         //INSERT INTO class ( name, floor, teacher_id ) VALUES ( ?, ?, ? )
  27.         int addOneResult = classMapperSimple.insert(addOneClazz);
  28.         System.out.println(addOneResult);
  29.     }
  30.     //delete
  31.     /**
  32.      * 根据Id删除一条记录
  33.      */
  34.     @Test
  35.     void simpleDeleteOneById(){
  36.         //DELETE FROM class WHERE id=?
  37.         int deleteByIdResult = classMapperSimple.deleteById(1);
  38.         System.out.println(deleteByIdResult);
  39.     }
  40.     //update
  41.     /**
  42.      * 根据Id更改一条记录
  43.      */
  44.     @Test
  45.     void simpleUpdateOneById(){
  46.         Class updateClass = new Class();
  47.         updateClass.setId(2);
  48.         updateClass.setName("1年级3班");
  49.         updateClass.setFloor(4);
  50.         updateClass.setTeacherId(2);
  51.         //UPDATE class SET name=?, floor=?, teacher_id=? WHERE id=?
  52.         int updateByIdResult = classMapperSimple.updateById(updateClass);
  53.         System.out.println(updateByIdResult);
  54.     }
  55.     //select
  56.     /**
  57.      * 根据Id查询一条记录
  58.      */
  59.     @Test
  60.     void simpleQueryOneById(){
  61.         //SELECT id,name,floor,teacher_id FROM class WHERE id=?
  62.         Class queryOneClass = classMapperSimple.selectById(1);
  63.         System.out.println(queryOneClass);
  64.     }
  65.     /**
  66.      * 查询所有记录
  67.      */
  68.     @Test
  69.     void simpleQueryAll() {
  70.         //SELECT id,name,floor,teacher_id FROM class
  71.         List<Class> queryClasses = classMapperSimple.selectList(null);
  72.         System.out.println(queryClasses);
  73.     }
  74.     /**
  75.      *|     函数名   |     说明     |
  76.      *| ----------- | ----------- |
  77.      *|      eq     |     等于     |
  78.      *|      ne     |     不等     |
  79.      *|      gt     |     大于     |
  80.      *|      it     |     小于     |
  81.      *|    between  | 在值1到值2之间 |
  82.      *|     like    |   模糊查询    |
  83.      *|     isNull  |  字段为NULL   |
  84.      */
  85.     @Autowired
  86.     private ClassMapper classMapperComplex;
  87.     //进阶操作
  88.     //单表操作
  89.     //select
  90.     /**
  91.      * 根据Id查询条数据
  92.      */
  93.     @Test
  94.     void complexQueryOne(){
  95.         LambdaQueryWrapper<Class> queryWrapper = Wrappers.lambdaQuery();
  96.         queryWrapper.eq(Class::getId, 1);
  97.         //SELECT id,name,floor,teacher_id FROM class WHERE (id = ?);
  98.         Class complexQueryOne = classMapperComplex.selectOne(queryWrapper);
  99.         System.out.println(complexQueryOne);
  100.     }
  101.     /**
  102.      * 查询相同条件的数据
  103.      */
  104.     @Test
  105.     void complexQueryAll(){
  106.         LambdaQueryWrapper<Class> queryWrapper = Wrappers.lambdaQuery();
  107.         queryWrapper.eq(Class::getFloor,1);
  108.         //SELECT id,name,floor,teacher_id FROM class WHERE (floor = ?);
  109.         List<Class> complexQueryAll = classMapperComplex.selectList(queryWrapper);
  110.         System.out.println(complexQueryAll);
  111.     }
  112.     /**
  113.      * 查询范围内的数据
  114.      */
  115.     @Test
  116.     void complexBetweenQuery(){
  117.         LambdaQueryWrapper<Class> queryWrapper = Wrappers.lambdaQuery();
  118.         queryWrapper.between(Class::getFloor,1,3);
  119.         //SELECT id,name,floor,teacher_id FROM class WHERE (floor BETWEEN ? AND ?);
  120.         List<Class> complexQueryAll = classMapperComplex.selectList(queryWrapper);
  121.         System.out.println(complexQueryAll);
  122.     }
  123.     /**
  124.      * 模糊查询
  125.      * like():前后加百分号,如 %1年级%
  126.      * likeLeft():前面加百分号,如 %1年级
  127.      * likeRight():后面加百分号,如 1年级%
  128.      */
  129.     @Test
  130.     void complexLikeQuery(){
  131.         LambdaQueryWrapper<Class> queryWrapper = Wrappers.lambdaQuery();
  132.         queryWrapper.likeRight(Class::getName,"1年级");
  133.         // SELECT id,name,floor,teacher_id FROM class WHERE (name LIKE ?);
  134.         List<Class> complexLikeQuery = classMapperComplex.selectList(queryWrapper);
  135.         System.out.println(complexLikeQuery);
  136.     }
  137.     /**
  138.      * 按照楼层升序排列,从小到大
  139.      */
  140.     @Test
  141.     void complexOrderQuery(){
  142.         LambdaQueryWrapper<Class> queryWrapper = Wrappers.lambdaQuery();
  143.         //condition :条件,返回boolean,当condition为true,进行排序,如果为false,则不排序
  144.         //isAsc:是否为升序,true为升序,false为降序
  145.         //columns:需要操作的列
  146.         queryWrapper.orderBy(true,true,Class::getFloor);
  147.         List<Class> complexOrderByAscQuery= classMapperComplex.selectList(queryWrapper);
  148.         System.out.println(complexOrderByAscQuery);
  149.     }
  150.     /**
  151.      * 分页查询
  152.      */
  153.     @Test
  154.     void complexPageQuery(){
  155.         Page<Class> page = new Page<>(1,3);
  156.         classMapperComplex.selectPage(page, null);
  157.         System.out.println(page.getRecords());//每页数据list集合
  158.         System.out.println(page.getCurrent());//当前页
  159.         System.out.println(page.getSize());//每页显示记录数
  160.         System.out.println(page.getTotal());//总记录数
  161.         System.out.println(page.getPages());//总页数
  162.         System.out.println(page.hasPrevious());//上一页
  163.         System.out.println(page.hasNext());//下一页
  164.     }
  165. }
复制代码
多表操作

MultipleTableOperationTest

[code][/code]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表