Java-资料程序员

Mybatis简介和入门

2018-06-03  本文已影响30人  弹指时间
11.png

MyBatis简介

MyBatis前身是Apache基金会的开源项目iBatis,在2010年该项目脱离Apache基金会,迁移到Google Code,并正式更名为MyBatis。在2013年11月,MyBatis代码迁移到GitHub

MyBatis是一个优秀的持久层框架,可以帮助开发人员屏蔽底层重复性的原生JDBC代码。MyBatis采用配置文件或相应注解动态管理SQL语句。

为什么要学习MyBatis?

传统的数据库操作技术-JDBC

-- SQL语句嵌在Java代码里,耦合度高。

-- 实际开发中SQL语句变化频繁,导致难以维护。

Hibernate框架

-- 内部对SQL语句做了较厚的封装,难以优化。

-- 不适合大数据量、高并发、低延迟的场景。

MyBatis简单入门

1. 建立一个Java工程

image

2. 导入相应的jar包和xml文件

image

3. 创建相关数据库表(以Mysql为例)

image

插入一条数据:

image

4. 创建MyBatis配置文件

image

配置文件内容如下:

<?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/mybatis" />  
                <property name="username" value="root" />  
                <property name="password" value="root" />  
            </dataSource>  
        </environment>  
    </environments>  
 </configuration> 

5. 创建数据库表对应的实体类

image

实体类代码如下:


package com.tzsj.pojo;

public class Employee {
    private Integer id;
    private String empName;
    private String gender;
    private String email;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "Employee [id=" + id + ", empName=" + empName + ", gender=" + gender + ", email=" + email + "]";
    }

}

6. 创建数据库表对应的映射文件

image

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">

<!-- namespace:名称空间 -->
<mapper namespace="com.tzsj.mybatis.EmployeeMapper">

<!-- 
    id:唯一标识
    resultType:返回值类型
    #{id}:传递的参数
 -->
    <select id="getEmpById" resultType="com.tzsj.pojo.Employee">
        select id, emp_name empName, gender, email from t_employee where id = #{id}
    </select>
</mapper>

7. 在MyBatis配置文件mybatis-config.xml中装载EmployeeMapper.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/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    <!-- 装载EmployeeMapper.xml文件 -->
    <mappers>
        <mapper resource="EmployeeMapper.xml" />
    </mappers>
</configuration>

8. 创建测试类进行测试

image

测试类代码如下:

package com.tzsj.test;

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.tzsj.pojo.Employee;

public class TestMyBatis {

    /**
     *  1. 根据MyBatis配置文件mybatis-config.xml获取SqlSessionFactory工厂对象
     *  2. 根据sqlSession工厂对象,获取sqlSession对象来执行增删改查操作
     *      一个sqlSession就是代表和数据库的一次会话,用完关闭
     *  3. 使用sql的唯一标志(EmployeeMapper.xml中的namespace值 + 对应的SQL语句id)来告诉MyBatis执行哪个sql
     * 
     */
    @Test
    public void test() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        try {
            Employee employee = session.selectOne("com.tzsj.mybatis.EmployeeMapper.getEmpById", 1);
            System.out.println(employee);
        } finally {
            session.close();
        }
    }

}

9. 进行Junit测试

测试结果如下:

image

原文地址https://blog.csdn.net/plxddyxnmd/article/details/80552071#

上一篇下一篇

猜你喜欢

热点阅读