转载自:https://www.cnblogs.com/zhouricong/p/9483099.html?ivk_sa=1024320u

1、预先的配置

(1)创建一个数据库(MySQL)mybatis和一张user表,脚本如下:

#创建mybatis数据库
create database mybatis;
#使用数据库
use mybatis;
#创建表,有id, name, age
create table user (
  ID INT(11) PRIMARY KEY AUTO_INCREMENT,
  NAME VARCHAR(18) DEFAULT NULL,
  AGE INT(11) DEFAULT NULL
)

(2)基本的PO(持久化对象)

package com.test.mybatistest;

public class User {
    private int ID;
    private String name;
    private int age;

    public User(int id, String name, int age){
        this.ID = id;
        this.name = name;
        this.age = age;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public void setName(String name) {
        this.name = name;
    }

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

    public int getID() {
        return ID;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

2、xml配置文件

(1)User.xml (位置:直接在src下)

<?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="com.test.springtest.User">
    <select id="GetUserByID" parameterType="int" resultType="com.test.springtest.dao.MUser">
        select * from `student` where id = #{id}
    </select>

    <insert
            id="saveUser" parameterType="com.test.springtest.User"
            useGeneratedKeys="true">
        insert into student(NAME,AGE) values (#{name},#{age})
    </insert>
</mapper>

具体解释:

<mapper namespace="com.test.springtest.User"

为这个mapper指定一个唯一的namespace,它习惯上设置为:“包名+sql映射文件名”,这样可以保值名的唯一。

<select id="GetUserByID" parameterType="int" resultType="com.test.mybatistest.User">

id:这个select语句的id
parameterType:指定查询是传入的参数类型
resultType:即返回结果集的类型,这理指定为User类型

select * from `student` where id = #{id}   

​ 一条select语句

useGeneratedKeys="true"  

​ 使用数据库的自动增长策略

(2)mybatis-config.xml (位置:直接在src下)

<?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>
    <!--环境配置,连接的数据库,这里使用的是MySQL-->
    <environments default="mysql">
        <environment id="mysql">
            <!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
            <transactionManager type="JDBC"></transactionManager>
            <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"></property>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybbs"></property>
                <property name="username" value="root"></property>
                <property name="password" value="root"></property>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--这是告诉Mybatis区哪找持久化类的映射文件,对于在src下的文件直接写文件名,
            如果在某包下,则要写明路径,如:com/mybatistest/config/User.xml-->
        <mapper resource="User.xml"></mapper>
    </mappers>
</configuration>

Mybatis的配置文件默认命名为mybatis-config.xml,程序运行前需要加载这个文件;

第一行是XML声明,指定字符集;

:Mybatis配置文件的根元素为

:用来配置Mybatis的环境,即连接的数据库。

:配置Mybatis的事务管理

:数据源,Mybatis推荐使用数据源(维持着一个连接池,而不用每次连接都开启一个连接)来管理数据库连接。而dataSource下的属性相信你已经懂了(如果你学过JDBC的配置)

3、运行测试

package com.test.springtest.test;
public class Test{

    public static void main(String[] args){
        //读取配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //初始化mybatis,创建SqlSessionFactory类实例
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        //创建Session实例
        SqlSession session = sqlSessionFactory.openSession();
        User user = new User(6, "张三", 33);
        //插入数据
        session.insert("com.test.springtest.User.saveUser",user);
        //提交事务
        session.commit();
        //关闭Session
        session.close();
    }
}

说明:

​ 程序先读取配置文件,然后通过SqlSession对象来操作持久化对象。

​ 为了使用Mybatis进行持久化操作,可以把上述程序总结如下操作步骤:

1)编写持久化类(e.g. User)和其持久化操作的Mapper.xml(e.g. User.xml),并在mapper.xml中定义SQL语句

2)获取SqlSessionFactory

3)获取SqlSession

4)用面向对象的方式操作数据库(session.insert()、session.update()、session.select()。。。。)

5)提交事务,关闭SqlSession