是基于mybatis的一个框架
特点:在项目启动的时候,帮我们生成指定数据库表对应的service层以及mapper层的crud功能
注意:mybatis plus不能实现连表查询
1.项目中单表的所有crud交给mybatis plus完成
2.复杂的连表查询功能自己实现
1.导包
2.整合
3.使用
com.baomidou mybatis-plus 3.5.1
spring-dao.xml
修改为mybatis-plus提供的SqlSessionFactoryBean
...
点击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;
}
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 {
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 {}
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{}
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);}
}
上一篇: 美丽的秋天日记100字
下一篇: 史铁生《合欢树》读书笔记