前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis Plus框架学习(一)为什么要学习什么框架,简单的代码实现,查询全部数据

MyBatis Plus框架学习(一)为什么要学习什么框架,简单的代码实现,查询全部数据

作者头像
一写代码就开心
发布2021-07-08 15:25:08
4100
发布2021-07-08 15:25:08
举报
文章被收录于专栏:java和pythonjava和python

目录

为什么使用MyBatis Plus?

A、再之前学习的Mybatis中 我们对单表的增删改查的操作,都是自己再mapper.xml中进行代码的书写,这样一来我们书写的代码比较的麻烦。 B、我们目前封装数据库的实体的时候,每一表都需要自己的书写实体类,这样一来,我们书写的代码就比较的麻烦。

解决的方案

MyBatis Plus:其实就是对MyBatis的进一步的封装。我们可以理解为代理模式,对mybatis的功能实现了扩展。使用aop。

代码实现

1 搭建ssm框架, 导入mybatisplus的jar包

在这里插入图片描述
在这里插入图片描述

注意: 其他配置和原有SSM流程不变,在applicationcontext.xml文件中 将Mybatis的工厂bean替换为MybatisPlus的工厂bean即可。

在这里插入图片描述
在这里插入图片描述

意思是: 用mybatisplus框架生成 factory工厂bean

代码语言:javascript
复制
  <bean id="factory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">

以上就是只是一个使用了mybatisplus的ssm项目的架构,代码还没有开始写,还没有使用mybatisplus框架写代码,只是一个项目架构

2 数据库建表

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
create  table t_student(
sid int(10) not null auto_increment,
s_name  varchar(100) not null,
sage int(3) default null,
ssex char(1) default null,
sphone char(11) default null,
primary key(sid)

)engine = innodb auto_increment=4 default charset = utf8;
在这里插入图片描述
在这里插入图片描述

以上我们现在就要用mybatisplus 实现对这个表的crud

3 创建实体类pojo

当自己创建的实体类pojo的名字和数据库的表名不一样时候,我们要一一映射,比如,我们现在创建的pojo的名字是Student ,但是数据库的名字是

在这里插入图片描述
在这里插入图片描述

我们要将两个实现映射,所以用这个注解@TableName() @TableField(“s_name”) 这个注解是我们自己写的实体类里面的字段的名字和数据库不一样,用这个注解实现映射。 @TableField(exist = false) 这个是实体类里面有这个字段,但是数据库中没有,我们就可以使用这个注解将这个字段过滤掉。

代码语言:javascript
复制
@TableName("t_student")
public class Student {
//    @TableId(type = IdType.AUTO)
    private Integer sid;
    @TableField("s_name")
    private String sname;
    private Integer sage;
    private String ssex;
    private String sphone;
    @TableField(exist = false)
    private String fav;

    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", sage=" + sage +
                ", ssex='" + ssex + '\'' +
                ", sphone='" + sphone + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(sid, student.sid) &&
                Objects.equals(sname, student.sname) &&
                Objects.equals(sage, student.sage) &&
                Objects.equals(ssex, student.ssex) &&
                Objects.equals(sphone, student.sphone);
    }

    @Override
    public int hashCode() {
        return Objects.hash(sid, sname, sage, ssex, sphone);
    }

    public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public Integer getSage() {
        return sage;
    }

    public void setSage(Integer sage) {
        this.sage = sage;
    }

    public String getSsex() {
        return ssex;
    }

    public void setSsex(String ssex) {
        this.ssex = ssex;
    }

    public String getSphone() {
        return sphone;
    }

    public void setSphone(String sphone) {
        this.sphone = sphone;
    }

    public Student() {
    }

    public Student(Integer sid, String sname, Integer sage, String ssex, String sphone) {
        this.sid = sid;
        this.sname = sname;
        this.sage = sage;
        this.ssex = ssex;
        this.sphone = sphone;
    }
}

4 写mapper层

因为我们现在使用了mybatisplus框架,只要使用了这个,那么就有单表的crud。我们不需要写任何的xml。但是我们只是导入了这个框架的jar包,还没有配置使用,如何使用这个框架呢?

在mapper层的接口,实现人家mybatisplus框架的接口就可以了

在这里插入图片描述
在这里插入图片描述

BaseMapper接口是mybatisplus框架的接口,我们自己写的mapper接口继承了这个,就可以实现对单表的crud

代码语言:javascript
复制
public interface StudentMapper extends BaseMapper<Student>
 {

}

我们看BaseMapper这个接口的源码

在这里插入图片描述
在这里插入图片描述

看到BaseMapper源码里面,已经有写好的一些方法,就是对单表的crud的一些方法。我们自己写的mapper接口,只要继承了这个人家的BaseMapper,就可以使用

5 创建测试类

从Spring容器中获取StudentMapper的接口的实例化对象并使用对象完成数据的查询操作,查询所有的学生信息

数据库有两条数据

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
   @Test
    public void testSelAllStu(){
        //获取Spring容器对象
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationcontext.xml");
        //获取StudentMapper接口的实例化对象
        StudentMapper studentMapper= (StudentMapper) ac.getBean("studentMapper");
        //查询所有的学生信息
        List<Student> students =  studentMapper.selectList(null);
        //输出结果
        System.out.println(students);

    }
在这里插入图片描述
在这里插入图片描述

selectList() 这个就是mybatisplus自带的方法,查询这个表的全部数据

MyBatis和Mybatis Plus的使用比较

MybatisPlus包含了Mybatis的所有功能,也就说在MybatisPlus中我们仍然可以按照Mybatis的方式来完成数据库的操作(无侵入)。 MybatisPlus的数据库操作的Mapper层的接口只需要继承BaseMapper接口,就自动的拥有了当前对应的表的基本的CRUE操作,无需声明接口方法及其xml文件,极大的提升了开发效率(MybatisPlus是通过实体类来逆向动态生成对应的表的基本的Sql语句)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 为什么使用MyBatis Plus?
  • 解决的方案
  • 代码实现
    • 1 搭建ssm框架, 导入mybatisplus的jar包
      • 2 数据库建表
        • 3 创建实体类pojo
          • 4 写mapper层
            • 5 创建测试类
            • MyBatis和Mybatis Plus的使用比较
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档