MyBatis简介以及环境搭建

一、MyBatis简介

  • MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

  • MyBatis可以使用简单的XML注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.

  • MyBatis是一个半自动化持久化层框架。

对于使用JDBC操作数据库,SQL夹在Java代码块里,耦合度高导致硬编码内伤,维护不易且实际开发需求中sql是有变化,频繁修改的情况多见。

Hibernate操作数据库,SQL长难且复杂,内部自动生产的SQL,不容易做特殊优化。基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。导致数据库性能下降。

MyBatis操作数据库,核心sql还是需要自己优化,sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据。MyBatis将重要的步骤抽取出来可以人工顶置,其他步骤自动化,重要步骤都是写在配置文件中,也方便维护。MyBatis底层就是对原生JDBC的一个简单封装,既将java编码与SQL抽取了出来,还不会失去自动化功能,属于半自动化的持久层框架。

MyBatis简介以及环境搭建_第1张图片

二、MyBatis环境搭建

创建MyBatis全局配置文件mybatis-config.xml



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

    
    <mappers>
        <mapper resource="EmployeeDao.xml"/>
    mappers>
configuration>

创建SQL映射文件EmployeeDao.xml,映射文件的作用就相当于是定义Dao接口的实现类如何工作。





<mapper namespace="dao.EmployeeDao">
    
    <select id="getEmpById" resultType="bean.Employee">
        select * from employee where id = #{id}
    select>

    
    <update id="updateEmployee">
        update employee set empname = #{empName}, gender = #{gender}, email = #{email} where id = #{id}
    update>

    <delete id="deleteEmployee">
        delete from employee where id = #{id}
    delete>

    <insert id="insertEmployee">
        insert into employee value(#{id}, #{empName}, #{gender}, #{email})
    insert>
mapper>

测试,根据全局配置文件,利用SqlSessionFactoryBuilder创建SqlSessionFactory,使用SqlSessionFactory获取sqlSession对象。一个SqlSession对象代表和数据库的一次会话。

    @Test
    public void test1() throws IOException {
     
        //1、根据全局配置文件创建出一个SQLSessionFactory
        //SqlSessionFactory是SqlSession工厂,负责创建SqlSession对象
        //SqlSession是sql会话,代表和数据库的一次会话
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        Employee employee = null;
        SqlSession sqlSession = null;

        try {
     
            //2.获取和数据库的一次会话,类似于getConnection()方法
            sqlSession = sqlSessionFactory.openSession();

            //3、使用SqlSession操作数据库,获取到dao接口的实现
            EmployeeDao employeeDao = sqlSession.getMapper(EmployeeDao.class);

            //4、调用接口中的方法
            int i = employeeDao.insertEmployee(new Employee(null, "tomcat", 1, "[email protected]"));
            System.out.println(i);
        } catch (Exception e) {
     
            e.printStackTrace();
        } finally {
     

            //默认自动提交为false,所以需要手动提交
            sqlSession.commit();

            //关闭会话
            sqlSession.close();
        }

    }

SqlSession 的实例不是线程安全的,因此是不能被共享的。每次使用完成后需要正确关闭,这个关闭操作是必须的。SqlSession可以直接调用方法的id进行数据库操作,但是最好还是使用SqlSession获取到Dao接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作。

你可能感兴趣的:(MyBatis,MyBatis)