Mybatis使用前的配置准备

65 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天

Mybatis

使用前的配置

  1. 创建maven工程

  2. 在maven的pom.xml配置文件中进行坐标配置

    <!--Mybatis核心-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.11</version>
            </dependency>
    ​
            <!--junit测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
    ​
            <!--MySQL驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.19</version>
            </dependency>
    
  3. 创建mybatis-config.xml,mybatis的核心配置文件,在文档中复制配置信息进去,把四个property标签配置好

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     "https://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.cj.jdbc.Driver"/>
     <!--temp替换成你自己的数据库名称-->
     <property name="url" value="jdbc:mysql://localhost:3306/temp?serverTimezone=UTC&amp;useSSL=false"/>
     <property name="username" value="root"/>
     <property name="password" value="hexing"/>
         
     </dataSource>
     </environment>
     </environments>
     <mappers>
         
     </mappers>
    </configuration>
    

    相应地,username{username}和{password}要改成自己电脑对应的mysql用户名以及密码

  4. 创建映射类,就是表中数据需要转化为的实体类,命名例如User

  5. 创建mapper接口(相当于以前的dao,区别在于,mapper仅仅是接口,不需要提供实现类),命名例如UserMapper

    public interface UserMapper {
        void selectUser();
    }
    
  6. 创建mybatis的映射文件,在这里进行映射的配置,命名例如UserMapper.xml,其中mapper标签的namespace值要与我们第五步中的的接口全类名保持一致,这样他们之间就完成了绑定

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.hexiaoxing.mybatis.mapper.UserMapper">
         
    </mapper>
    

    在mapper标签中就可以通过标签来定义对应数据库的增删改查操作,其中select标签的id要和第五步中的接口内的对应方法名保持一致,resultType对应实现类,完成数据库操作与对应接口方法的绑定

    <select id="selectUser" resultType="User">
         select * from User
         </select>
    

    往后我们增删改查操作都在接口中定义方法,在映射文件中绑定,通过面向接口编程达到操作数据库的目的

  7. 最后,我们在mybatis-config文件的mappers中引入映射文件,配置完成

    <mappers>
            <mapper resource="mappers/UserMapper.xml"/>
        </mappers>
    

使用前的准备

  1. 在test下创建对应包及测试类,第一步:在类中创建测试方法,并加@test注释

    @Test
        public void testMyBatis(){
            
        }
    
  2. 在方法体中加载核心配置文件,括号内传入的是配置第三步时创建的核心配置文件

    @Test
        public void testMyBatis(){
            //加载核心配置文件
            Resources.getResourceAsStream("mybatis-config.xml");
        }
    
  3. 获取sqlSessionFactoryBuilder对象,Bilder,顾名思义,用来创建sqlSessionFactory对象

            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  4. 这里创建sqlSessionFactory对象,Factory,顾名思义,用来生产创建sqlSession

            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
  5. 通过工厂方法创建SqlSession对象,这里的SqlSession就代表了java程序和数据库之间的会话,传入true表示自动向数据库提交事务

            SqlSession sqlSession = sqlSessionFactory.openSession(true);
    
  6. 接下来就通过SqlSession获取mapper接口对象,这里getMapper会帮我们创建传入接口的实现类并返回

            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  7. 全部代码:

    package com.hexiaoxing.mybatis.test;
    ​
    import com.hexiaoxing.mybatis.mapper.UserMapper;
    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 java.io.IOException;
    import java.io.InputStream;
    ​
    public class MybatisTest {
        @Test
        public void testMyBatis() throws IOException {
            //加载核心配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //获取sqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            //获取sqlSessionFactory
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            //获取SqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            //获取mapper接口对象
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    ​
        }
    }
    ​
    

补充:

工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象