Java后台之路(18)-MyBatis


MyBatis简介

MyBatis是Apache的一个开源项目,它对JDBC进行了封装,是开发者不再需要繁琐地去处理驱动、创建connection、创建statement等。它让开发者更专注于执行sql并将结果集映射到javabean上。

我们需要加入MyBatis的jar包,GitHub地址,以及数据库驱动jar包。

MyBatis的工作流程,盗用小弟的图:

这里写图片描述

我们来阐述一下这个过程:

1、SqlMapConfig.xml是MyBatis的全局配置文件,我们在文件里配置驱动、数据库地址、用户名密码等运行环境信息;

2、mapper.xml是sql映射文件,它配置了sql语句,这些文件需要在SqlMapConfig.xml中声明加载;

3、我们通过以上配置信息构造出SqlSessionFactory会话工厂;

4、通过会话工厂SqlSessionFactory创建会话SqlSession来操作数据库;

5、MyBatis底层自定义Executor(执行器)接口用于执行数据库操作,该接口有两个实现:基本执行器和缓存执行器;

6、MappedStatement是MyBatis的底层封装对象,它封装了操作数据库的sql语句,输入参数,输出结果等信息。mapper.xml文件中每一个sql语句对应一个MappedStatement对象,sql语句的id即是MappedStatement的id;

7、MappedStatement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql前将输入的java对象映射至sql中;

8、MappedStatement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql后将输出结果映射至java对象中。


MyBatis简单示例

在了解MyBatis的基本原理之后我们需要通过一个简单的示例来让我们更加清晰地认识到MyBatis,我们根据上面介绍的方式一步一步来写示例。

1. 数据准备

建表插入数据。

这里写图片描述

2.SqlMapConfig.xml文件配置

我在src目录下新建配置文件SqlMapConfig.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="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mydatabase?useSSL=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/sqlmap/PersonMapper.xml"/>
    </mappers>

</configuration>

3. PersonMapper.xml配置

在包”com.sqlmap”中新建一个PersonMapper.xml文件

<?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="person">

    <select id="query" resultType="com.javabean.Person">
        select * from person
    </select>

    <select id="findPersonByName" parameterType="java.lang.String" resultType="com.javabean.Person">
        select * from person where pname=#{value}
    </select>

</mapper>

4. Person.class类

在包”com.javabean”中新建Person.class类。

public class Person {

    private int pid;
    private String pname;
    private int page;
    private String pcity;

    //setter、getter

    public String toString(){
        return "pid:" + pid + ", pname:" + pname + ", page:" + page + ", pcity:" + pcity;
    }
}

5. 测试

伪代码:

String resource = "SqlMapConfig.xml";
InputStream input = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(input);

private void findPersonByName(String name){
    SqlSession session = factory.openSession();
    Person person = (Person) session.selectOne("person.findPersonByName", name);
    session.close();
    System.out.println(person.toString());;
}

private void query(){
    SqlSession session = factory.openSession();
    List<Person> persons = session.selectList("person.query");
    session.close();
    for( Person person : persons ){
        System.out.println(person.toString());
    }
}

上面准备的数据库得知,

findPersonByName(“戚继光”)结果为:

pid:1, pname:戚继光, page:24, pcity:蓟州

query()结果为:

pid:1, pname:戚继光, page:24, pcity:蓟州
pid:2, pname:李鸿章, page:74, pcity:合肥


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值