Mybatis学习之初步上手

363 阅读3分钟

回顾

在之前的文章中都是学习java基础相关知识,近期抽出时间,整理下mybatis的学习笔记。

Mybatis是什么?

简单来说mybatis是一个ORM框架,官方文档如下写到

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

简单的HelloWorld

1.创建数据库并创建一条数据

create table tbl_employee(id int(11) primary key auto_increment,last_name varchar(255),gender char(1),email varchar(255));

2.创建Mavan项目并导入相关依赖

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

用了mybatis 以及连接数据库工具还有就是log4j 用于打印sql语句。

3.构建与employee表对应的java bean类

package com.zhang;

public class Employee {
    private  Integer id;
    private  String lastName;
    private  String email;
    private  String gender;

    public Employee() {
    }

    public Employee(Integer id, String lastName, String email, String gender) {
        this.id = id;
        this.lastName = lastName;
        this.email = email;
        this.gender = gender;
    }

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

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Integer getId() {
        return id;
    }

    public String getLastName() {
        return lastName;
    }

    public String getEmail() {
        return email;
    }

    public String getGender() {
        return gender;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", lastName='" + lastName + '\'' +
                ", email='" + email + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}

4.编写配置文件mybatis-config.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/employee"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="EmployeeMapper.xml"/>
    </mappers>
</configuration>

5.编写映射文件EmployeeMapper.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="com.zhang.EmployeeMapper">
    <select id="selectEmp" resultType="com.zhang.Employee">
    select id,last_name lastName,email,gender from tbl_employee where id = #{id}
  </select>
</mapper>

6.编写测试代码

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession= sqlSessionFactory.openSession();
try{
    Employee employee= sqlSession.selectOne("com.zhang.EmployeeMapper.selectEmp",1);
    System.out.println(employee);
}finally {
    sqlSession.close();
}

7.运行代码如下

可以看到mybatis连接了数据库 并发起了查询,并将查询结果封装成了了一个java bean对象。

分析

mybatis-config.xml是全局的一个配置文件,其最主要的配置项便是连接数据库的配置,指定库,端口,用户名密码等,EmployeeMapper.xml是一个映射文件,其中记载了需要执行的sql语句和结果的封装类型。且在全局配置文件中引入加载。 我们从配置文件中读取数据流,获得sqlSessionFactory,然后构建sqlSession, 再用sqlSession.selectOne去传入我们指定好的sql,再传入参数id=1; 那么mybatis便构建出一条完整的sql语句

select id,last_name lastName,email,gender from tbl_employee where id = 1;

然后根据我们事先指定的类型,将结果集封装成我们需要的一个对象。

##总结 初步上手得出mybatis将构建sql一个环节交给了用户,我们需要指定返回值类型和传入对应参数,mybatis便执行查询且将结果集封装,的确很方便。 本篇是初步上手,缓存动态配置sql且关注作者后续文章。 喜欢本文的朋友们,欢迎长按下图关注订阅号"我的编程笔记",收看更多精彩内容~~