Mybatis的运行原理?(1)sqlMapConfig.xml是Mybatis的核心配置文件,通过其中的配置可以生成SqlSessionFactory,也就是SqlSession工厂 (2)基于S

1.首先配置开发环境:

JDK1.8 >>>MYsql5.5-5.7

添加jar包:

c3p0-0.9.1.2

mysql-connector-java-5.0.8-bin.jar

Sql:

-- 1、删除 yonghedb 数据库(如果存在)

drop database if exists yonghedb;

-- 2、创建数据库 yonghedb 数据库

create database yonghedb charset utf8;

use yonghedb; -- 选择yonghedb数据库

 

-- 3、在 yonghedb 库中创建 emp 表

create table emp(

    id int primary key auto_increment,

    name varchar(50),

    job varchar(50),

    salary double

);

-- 4、往 emp 表中, 插入若干条记录

insert into emp values(null, "张三", '程序员', 3300);

 

sqlMapConfig.xml,引入Mapper配置文件

<configuration>
    <!-- 配置开发环境 -->
    <environments default="develop">
        <!-- default指向哪个id,就使用的哪个环境 -->
        <environment id="develop">
        <!-- 配置环境,可配置多个环境(比如:develop开发、test测试) -->
        <!-- id>环境的编号 environment标签不能为空 -->
            <transactionManager type="JDBC">
            <!-- 事务管理器>配置事务管理方式  type的取值:将事务交给JDBC管理,推荐使用
                 MANAGEN(自己管理事务,不推荐)-->
            </transactionManager>
            <!-- 配置数据源>连接池type=
                POOLED(使用连接池)
                UNPOOLEN(不使用连接池)
                JNDI(不推荐使用)
             -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/yonghedb?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 引入Mapper配置文件,可以配置多个 -->
    <mappers>
        <mapper resource="com/java/pojo/EmpMapper.xml"/>
    </mappers>
</configuration>

2.由以上配置文件印射了一个配置文件com/java/pojo/EmpMapper.xml

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 
    namespace一般指定为当前文件的所在包路径+文件名
    将来在程序中通过[ namespace + id ]定位到执行哪一条SQL语句]
    并且namespace、id的值不能重复
 -->
<mapper namespace="com.java.pojo.EmpMapper">
    <!-- 通过select、insert、update、delete标签声明要执行的SQL -->
    <select id="findAll" resultType="com.java.pojo.Emp">
        select * from emp
    </select>
    <update id="update">
        update emp set name=#{name},job=#{job},salary=#{salary} where id=#{id}
    </update>
    <update id="add">
        insert into emp values(null,#{name},#{job},#{salary})
    </update>
     <delete id="delete">
         delete from emp where id=#{id}
     </delete>
     
</mapper>

3.通过namespace+id标签指向的实体类Emp

public class Emp {
    private Integer id;
    private String name;
    private String job;
    private Double salary;

public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    @Override
    public String toString() {
        return "Emp [id=" + id + ", name=" + name + ", job=" + job + ", salary=" + salary + "]";
    }
}

4.通过封装的JDBC操作数据库

public class TestMybatis {
    public static void main(String[] args) throws Exception {
        InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory facyory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = facyory.openSession();
        List<Emp> list = session.selectList("com.java.pojo.EmpMapper.findAll");
        for (Emp emp : list) {
            System.out.println(emp);
        }
    }
}

总结运行过程如下

(1)sqlMapConfig.xml是Mybatis的核心配置文件,通过其中的配置可以生成SqlSessionFactory,也就是SqlSession工厂

(2)基于SqlSessionFactory可以生成SqlSession对象

(3)SqlSession是一个既可以发送SQL去执行,并返回结果,类似于JDBC中的Connection对象,也是Mybatis中至关重要的一个对象。

(4)Executor是SqlSession底层的对象,用于执行SQL语句

(5)MapperStatement对象也是SqlSession底层的对象,用于接收输入映射(SQL语句中的参数),以及做输出映射(即将SQL查询的结果映射成相应的结果)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ꦿ╰⊙ō⊙╯ ꦿ波仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值