MyBatis简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。(来源于百度百科)

简单的说就是MyBatis代替原生JDBC的写法,减少了代码的冗余以及连接的性能问题,使得我们用起来更加简单,运行起来也更快。(具体是为什么有代码的冗余以及连接性能的问题,可以看我其他的文章,有写过对这一部分的粗略的封装步骤)

使用的环境

JDK版本:1.8
编译器:Intelli IDEA 2019
MyBatis版本:3.5.3

MyBatis的下载与配置

  1. 下载jar包
    1)打开 https://mybatis.org/mybatis-3/
    2)点击project's Git
    image
    3)跳转到该项目的根路径
    image
    4)拖到网页最下面,点击download Lastest
    image
    5)找到相对应的版本,点击Assert下的mybatis.zip(我下载的是mybatis3.5.3)
    image
  2. Jar包下载完成之后
    1)创建一个Java项目
    2)在项目的根路径下创建一个lib文件夹,把mybatis的jar放入
    3)点击File-->project structure-->Libraries-->+号
    image
    4)找到并选中当前项目的lib文件夹下的jar包,点击apply--->OK,jar导入完成
    5)除了导入mybatisjar,还要导入jdbc的jar包(导入步骤相同,jar包的话得自己去下载)
    6)创建一个User类,这个类是对应数据库中的User表,代码如下:(大家根据自己实际的数据库中的表去建立这个实体类)

    package domain;
    
    public class User {
    
        private String account;
        private String password;
        private Float balance;
    
        public User(){}
    
        public User(String account, String password, Float balance) {
            this.account = account;
            this.password = password;
            this.balance = balance;
        }
    
        public String getAccount() {
            return account;
        }
    
        public void setAccount(String account) {
            this.account = account;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Float getBalance() {
            return balance;
        }
    
        public void setBalance(Float balance) {
            this.balance = balance;
        }
    }
    

    7)创建一个UserDao类,这个类是对User表进行增删改查的操作,这里我们测试insert的SQL语句,代码如下

    package dao;
    
    import domain.User;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.InputStream;
    
    public class UserDao {
        public void insert(User user){
            //MYBATIS操作流程
            //获取工厂Builder对象
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            //获取configuration.xml配置文件的输入流
            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("configuration.xml");
            //builder根据is获取SqlSessionFactory工厂对象
            SqlSessionFactory factory = builder.build(is);
            //获取SqlSession对象
            SqlSession sqlSession = factory.openSession();
            //执行sql语句操作
            //这个"insert"与UserMapper.xml中的insert标签的id属性一致,user是我们要插入的数据
            sqlSession.insert("insert", user);
    
            //SqlSession对象默认是手动提交事物,所以得调用commit()方法提交,否则插入不算成功
            //如果想改为自动提交的话,在调用openSession()方法中传入true参数
            sqlSession.commit();
        }
    }

    8)在src目录下创建一个configuration.xml文件,并在该文件中使用如下代码

    *  transactionManager表示的是数据库连接管理的方式,这里我们用的JDBC
    *  dataSource表示的是是否需要用到连接池
    *  property表示的连接数据库要用到的一些参数
        *  driver表示数据库驱动包,我这里用的8.0版本jdbc
        *  url表示的是数据库的地址
        *  username是访问数据库时用到的用户名
        *  password是密码
    *  mapper标签表示的是与存放sql语句的mapper.xml文件的映射关系,rsource属性表示mapper.xml文件存放的位置(当前路径下)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="e1">
        <environment id="e1">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/bank?serverTimezone=CST"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml">       </mapper>
    </mappers>
</configuration>

9)在src目录下创建一个mapper文件夹,在文件夹下创建一个UserMapper.xml文件,文件内容如下:
    *  该文件是为了存储UserDao类中执行时需要用到的所有Sql语句
    *  这里用了insert语句标签
    *  之前我们用原生的jdbc对数据库进行增删改查的时候,对于参数我们用的是?来表示,这里我们需要用#{}来代替,并且#{}中间存放的数据对应的名字,这个名字需要和User实体类的属性名一致
```
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserDao">
    <insert id="insert">
        INSERT ATM VALUES(#{account}, #{password}, #{balance})
    </insert>
</mapper>
```
10)在Main函数里写入如下代码并执行
```
import dao.UserDao;
import domain.User;
import service.UserService;

public class TestMain {

    public static void main(String[] args) {
        UserDao dao = new UserDao();
        dao.insert(new User("1012","123",12f));
    }
}
```

执行完之后应该是能够在数据库中查找到插入的数据,如果有什么不明白的地方或者哪个地方有错误,也欢迎大家私信我,这里只是演示一下大概的流程,之后还会写一些更为具体的使用的文章!!!


cing_self
18 声望3 粉丝