MyBatis

MyBatis 它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低

ORM  Object Relation Mapping,对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系

为什么mybatis是半自动的ORM框架?

用mybatis进行开发,需要手动编写SQL语句。而全自动的ORM框架,如hibernate,则不需要编写SQL语句。用hibernate开发,只需要定义好ORM映射关系,就可以直接进行CRUD操作了。由于mybatis需要手写SQL语句,所以它有较高的灵活性,可以根据需要,自由地对SQL进行定制,也因为要手写SQL,当要切换数据库时,SQL语句可能就要重写,因为不同的数据库有不同的方言(Dialect),所以mybatis的数据库无关性低。虽然mybatis需要手写SQL,但相比JDBC,它提供了输入映射和输出映射,可以很方便地进行SQL参数设置,以及结果集封装。并且还提供了关联查询和动态SQL等功能,极大地提升了开发的效率。并且它的学习成本也比hibernate低很多

只需要通过如下几个步骤,即可用mybatis快速进行持久层的开发

  1. 编写全局配置文件
  2. 编写mapper映射文件
  3. 加载全局配置文件,生成SqlSessionFactory
  4. 创建SqlSession,调用mapper映射文件中的SQL语句来执行CRUD操作

示例

1.在mysql上创建一个库test,并在里面创建一张student表

 

2.打开IDEA,创建一个普通项目目录结构

 

 

3.导入jar包

 

4.student类

package com.softeem.dto;

import java.util.Date;

public class Student {
    private int id;
    private String sname;
    private String sex;
    private int age;
    private Date birthday;

    public Student() {
    }

    public Student(int id, String sname, String sex, int age, Date birthday) {
        this.id = id;
        this.sname = sname;
        this.sex = sex;
        this.age = age;
        this.birthday = birthday;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getSname() {
        return sname;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", sname='" + sname + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                '}';
    }
}

5.编写mapper映射文件(编写SQL)——StudentMapper.xml

 6.编写全局配置文件(主要是配置数据源信息)——mybatis-config.xml

 6.StudentMapper接口

7.测试

package com.softeem.test;

import com.softeem.dto.Student;
import com.softeem.mapper.StudentMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {
    public static void main(String[] args) throws IOException {
        //将读取配置设置能流信息
        InputStream is =  Resources.getResourceAsStream("mybatis-config.xml");

        //1、读取依赖和配置信息,处理成为流的形式,配置信息中有jdbc的连接和要处理的的操作的连接
        //2、将读取到流信息赋值给SqlSessionFactoryBuilder,让其对信息加载然后给到SqlSessionFactory
        //   到此为止,SqlSessionFactoryBuilder将信息加载之后就完成了任务的销毁
        //3、此时我们的配置信息已经加载SqlSessionFactory,并且SqlSessionFactory是只要程序执行期间就都一直存在的
        //4、开始加载存放在SqlSessionFactory中的信息,然后



        //获取sqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //获取sqlSession对象
        SqlSession session = factory.openSession();

        //获取mapper对象
        StudentMapper mapper = session.getMapper(StudentMapper.class);
        List<Student> list = mapper.selectAll();
        list.forEach(s -> System.out.println(s));
    }
}

运行截图

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值