MyBatis-Plus(第一篇开山篇)
创始人
2024-02-07 18:35:41
0

MyBatis-Plus(第一篇开山篇)

目录

  • MyBatis-Plus(第一篇开山篇)
    • 结论:
    • 使用mybatis plus步骤
      • 1.导包
      • 2.整合(修改spring-dao配置文件)
      • 3.使用
        • 3.1 javaBean
        • 3.2 mapper层
        • 3.3 service层
          • 3.3.1 service接口
          • 3.3.2 service实现类
        • 3.4 测试类

官网: https://baomidou.com/

是基于mybatis的一个框架

特点:在项目启动的时候,帮我们生成指定数据库表对应的service层以及mapper层的crud功能

注意:mybatis plus不能实现连表查询

结论:

1.项目中单表的所有crud交给mybatis plus完成
2.复杂的连表查询功能自己实现

使用mybatis plus步骤

1.导包
2.整合
3.使用

1.导包









com.baomidoumybatis-plus3.5.1

2.整合(修改spring-dao配置文件)

spring-dao.xml

修改为mybatis-plus提供的SqlSessionFactoryBean


...

3.使用

3.1 javaBean

点击DataSource->点击“+”
在这里插入图片描述
点击DataSource->点击MySQL
在这里插入图片描述
驱动选择MySQL for 5.1
输入主机IP、端口号、数据库的用户名和密码->点击Test Connection
在这里插入图片描述
点击Download Driver Files
在这里插入图片描述
测试成功->点击OK
在这里插入图片描述
点击1 of 6 选择数据库
在这里插入图片描述
使用MybatisX插件,详细可参考我的另一篇博客——《MybatisX插件 逆向工程》https://huanghaoheng.blog.csdn.net/article/details/127955285
选择你想要逆向生成的表->右击->点击MybatisX-Generator

在这里插入图片描述

在这里插入图片描述
annotation 选择 Mybatis-Plus 3
options 勾选 Lombok
template 选择 mybatis-plus
在这里插入图片描述
//声明当前Javabean对应的数据库表的名称
@TableName(value =“数据库表名”)
//TableId注解声明当前属性对应的数据库表中的字段为主键
@TableId(type = IdType.AUTO)
//TableField 声明当前属性对应的数据库表中的字段为普通字段
//exist = false 声明告诉mybatis-plus 这个属性在对应的数据库表中没有匹配的字段
@TableField(exist = false)

package com.bjpowernode.mybatisPlusDemo.domain;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.experimental.Accessors;/*** * @TableName course*/
//声明当前Javabean对应的数据库表的名称
@TableName(value ="course")
@Data
@Accessors(chain = true)
public class Course implements Serializable {/*** id*///TableId注解声明当前属性对应的数据库表中的字段为主键@TableId(type = IdType.AUTO)private Integer id;/*** 课程名*/private String courseName;/*** 课程一句话简介*/private String brief;/*** 原价*/private Double price;/*** 原价标签*/private String priceTag;/*** 优惠价*/private Double discounts;/*** 优惠标签*/private String discountsTag;/*** 描述markdown*/private String courseDescriptionMarkDown;/*** 课程描述*/private String courseDescription;/*** 课程分享图片url*/private String courseImgUrl;/*** 是否新品*/private Boolean isNew;/*** 广告语*/private String isNewDes;/*** 最后操作者*/private Integer lastOperatorId;/*** 自动上架时间*/private Date autoOnlineTime;/*** 记录创建时间*/private Date createTime;/*** 更新时间*/private Date updateTime;/*** 是否删除*/private Boolean isDel;/*** 总时长(分钟)*/private Integer totalDuration;/*** 课程列表展示图片*/private String courseListImg;/*** 课程状态,0-草稿,1-上架*/private Integer status;/*** 课程排序,用于后台保存草稿时用到*/private Integer sortNum;/*** 课程预览第一个字段*/private String previewFirstField;/*** 课程预览第二个字段*/private String previewSecondField;/*** 销量*/private Integer sales;//TableField 声明当前属性对应的数据库表中的字段为普通字段//exist = false 声明告诉mybatis-plus 这个属性在对应的数据库表中没有匹配的字段@TableField(exist = false)private static final long serialVersionUID = 1L;
}

3.2 mapper层

package com.bjpowernode.mybatisPlusDemo.mapper;import com.bjpowernode.mybatisPlusDemo.domain.Course;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;/*** @Entity com.bjpowernode.mybatisPlusDemo.domain.Course* mybatis plus的dao接口  继承另一个接口:BaseMapper* 这个接口中帮我们定义好了dao层的基本的crud的所有的抽象方法* 我们启动项目的时候,会生成CourseMapper接口的实现类对象,mybatis-plus会帮我们将该实现对象实现此接口的所有方法*/
public interface CourseMapper extends BaseMapper {

3.3 service层

3.3.1 service接口
package com.bjpowernode.mybatisPlusDemo.service;import com.bjpowernode.mybatisPlusDemo.domain.Course;
import com.baomidou.mybatisplus.extension.service.IService;/*** mybais-plus的servici接口* 继承了另一个接口:IService* 此接口帮我们将业务层的curd方法都声明好了*/
public interface CourseService extends IService {}
3.3.2 service实现类
package com.bjpowernode.mybatisPlusDemo.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bjpowernode.mybatisPlusDemo.domain.Course;
import com.bjpowernode.mybatisPlusDemo.service.CourseService;
import com.bjpowernode.mybatisPlusDemo.mapper.CourseMapper;
import org.springframework.stereotype.Service;/*** mybatis-plus的service层的实现类* 继承了另一个类ServiceImpl* 这个类自动的帮我们依赖了对应的mapper实现,然后通过调用该mapper实现的方式实现了service接口的每一个抽象方法*/
@Service
public class CourseServiceImpl extends ServiceImplimplements CourseService{}

3.4 测试类

package com.bjpowernode.TestMybatisPlus;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bjpowernode.mybatisPlusDemo.domain.Course;
import com.bjpowernode.mybatisPlusDemo.service.CourseService;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;
import java.util.function.Consumer;public class MyTest {private CourseService courseService = null;/**执行任何一个@Test方法之前 都一定会先执行当前被@Before标注的方法*/@Beforepublic void before(){ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-service.xml");courseService = context.getBean("courseServiceImpl", CourseService.class);}@Testpublic void testAdd(){Course course = new Course();course.setCourseName("haha");courseService.save(course);}@Testpublic void testDelete(){courseService.removeById(33);}@Testpublic void testUpdate(){Course course = new Course();course.setId(32).setCourseName("动力节点Java培训班");courseService.updateById(course);}@Testpublic void testFindOne(){Course course = courseService.getById(31);System.out.println("course = " + course);}@Testpublic void testFindAll(){List courseList = courseService.list();System.out.println("courseList = " + courseList);}/***测试自定义查询条件* 1.创建条件装饰器* 2.调用查询的方法 将条件装饰器作为参数*/@Testpublic void testFind() {//1.创建条件装饰器QueryWrapper qw = new QueryWrapper<>();/*封装自定义的条件* eq:表示条件 是 判断是否相等* status:参与判断的字段名称* 1:判断是否相等的具体的值** 最终的效果:where course_name = '大数据'* */qw.eq("status", 1);List courseList = courseService.list(qw);System.out.println("courseList = " + courseList);}/***测试自定义查询条件* 1.创建条件装饰器* 2.调用查询的方法 将条件装饰器作为参数*/@Testpublic void testFind2() {QueryWrapper qw = new QueryWrapper<>();/** 相当于 where course_name like "%全栈%"*/qw.like("course_name","全栈");List courseList = courseService.list(qw);System.out.println("courseList = " + courseList);}/***测试自定义查询条件* 1.创建条件装饰器* 2.调用查询的方法 将条件装饰器作为参数*/@Testpublic void testFind3() {QueryWrapper qw = new QueryWrapper<>();//        qw.like("course_name","全栈");
//        qw.eq("status",0);//        qw.like("course_name","全栈").eq("status",0);//        qw.like("course_name","全栈").and(new Consumer>() {
//            @Override
//            public void accept(QueryWrapper courseQueryWrapper) {
//                courseQueryWrapper.eq("status",0);
//            }
//        });qw.like("course_name","全栈").and((x)->{x.eq("status",0);});List courseList = courseService.list(qw);System.out.println("courseList = " + courseList);}
}

相关内容

热门资讯

安全教育名言   安全教育名言  1、查隐患及时整改不马虎,纠违章严肃处理不放过。  2、穿马路是左右看,用家电是...
保尔的名言 保尔的名言  1、一个人的生命应当这样度过:当他回首往事的时候不会因虚度年华而悔恨,也不会因碌碌无为...
诚信的名言 有关诚信的名言15篇  在日常的学习、工作、生活中,大家最不陌生的就是名言了吧,名言主要用来激励和告...
环保的名言名句 环保的名言名句  在平平淡淡的日常中,大家总免不了要接触或使用名言吧,在议论文中,引用名言,不但体现...
自强不息的名言名句 自强不息的名言名句  自强不息的名言名句【经典篇】  1、生活的目标,是唯一值得寻找的财富。——史蒂...
教师人生格言大全   教师人生格言大全    1、 教师如果对学生没有热情,决不能成为好教师。但是教师对于学生的爱是一...
简短的人生格言 简短的人生格言集锦55句  人假使没有自尊心,那就会一无价值。——[俄国]屠格涅夫以下是小编为大家推...
谦虚的名言 谦虚的名言  谦虚的名言  在日常学习、工作或生活中,说到名言,大家肯定都不陌生吧,名言可以带来警醒...
珍爱生命的名人名言 珍爱生命的名人名言(精选55句)  关于生命的名人名言有哪些?生命,值得我们尊重,你知道哪些关于生命...
关于知音的名言名句  导语:关于知音或者是友谊的古诗词, 名人名言,这里全都有,关于知音的名言名句。  君子之交淡若水,...
清正廉洁格言 清正廉洁格言最短的人生格言1、执政以廉为本,为官以勤为先。2、做人一身正气,为官一尘不染。3、名位利...
罗素名言 罗素名言69句  1、伟大的事业是根源于坚韧不断的工作,以全付精神去从事,不避艰苦。——罗素  2、...
朋友的名人名言 有关朋友的名人名言汇总  在学习、工作、生活中,大家都不可避免地会接触并使用名言吧,名言可以用来鞭策...
乔布斯名言经典摘抄 乔布斯名言经典摘抄  乔布斯出生于美国加利福尼亚州旧金山,美国发明家、企业家、美国苹果公司联合创办人...
夺眶而出的名言名句 关于夺眶而出的名言名句  这里是郁郁葱葱的山神之森,一定,要有一段时间无法再盼望夏天了,心如刀绞,泪...
信仰名言 精选关于信仰名言  关于信仰名言  1、没有信仰的人如同盲人(弥顿)  2、有信仰未必能成大事,而没...
告诉自己珍惜时间的名言名句 志士惜年,贤人惜日,圣人惜时,告诉自己珍惜时间的名言名句。圣人都珍惜时间,我们凡人更要珍惜时间。下面...
工匠精神的名人名言 关于工匠精神的名人名言  1、最佳的创新定义是“不限大小,不限部门”。 最有效的创新都简单得惊人,其...
青春奋斗的名言警句 关于青春奋斗的名言警句1、青春是美妙的,挥霍青春就是犯罪,关于青春奋斗的名言警句。——萧伯纳  2、...
理想的阶梯 理想的阶梯理想的阶梯[教学目标]1.通过学习本文,使学生懂得“奋斗,是实现理想的阶梯”这一道理,并能...