Mybatis的初始化

一、添加jar包

 <dependencies>
<!--    具体依赖的jar包配置代码放这里-->
    <!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.22</version>
    </dependency>
<!--    junit-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!--myBaits-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.2</version>
    </dependency>

这是用了Maven构建工具来添加jar包

二、配置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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/Book?useSSL=false&amp;serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;allowPublicKeyRetrieval=true"/>
                <property name="username" value="root"/>
                <property name="password" value="密码"/>
            </dataSource>
        </environment>
    </environments>
<!--    每一个(Dao)mapper.xml文件需要配置 注意是用斜线/而不是用.-->
    <mappers>
        <mapper resource="com/gy/dao/UserMapper.xml"/>
        <mapper resource="com/gy/dao/PageMapper.xml"/>
        <mapper resource="com/gy/dao/StudentMapper.xml"/>
    </mappers>
</configuration>

 三、编写MybatisUtils工具类

package com.gy.utils;

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 java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
   static SqlSessionFactory  sqlSessionFactory =null;
    static {
        try {
            String resource = "mybatis-config.xml";//resources目录下的文件可以直接访问。
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

依据为官网帮助文档

 sqlSessionFactoryBuilder应该为局部变量,而SqlSessionFactory应该为静态变量。

四、开始编写代码并使用

 (1)UserMapper为接口只需要写返回类型和方法名即可

public interface UserMapper {
    List<User> getUserList();
    User getUserOne();
}

(2)编写对应的UserMapper.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">
<!--绑定对应的Dao/mapper对应的接口-->
<mapper namespace="com.gy.dao.UserMapper">

    <!--    编写sql语句,resultType表示返回单个指定对象(推),map则返回map集合-->

<!--id为接口UserMapper的对应方法  resultType为sql语句执行完毕后的结果类型 -->
    <select id="getUserList" resultType="com.gy.pojo.User">
        select * from mybatis.user;
    </select>
    
    <select id="getUserOne" resultType="com.gy.pojo.User">
        select * from mybatis.user where id=2;
    </select>


</mapper>

(3)还有就是要在Maven的pom.xml添加如下代码(第一篇文章有说)

<build>
<!--必须配置,属于maven的一个bug,只有这样mapper.xml文件才能编译导出-->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>

(4)使用并测试

package com.gy.dao;

import com.gy.pojo.User;
import com.gy.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
    @Test
    public void test(){

        //不需要手动关闭流了 不管如何都会关闭try()中的流对象
        // 获取sqlSession对象
        try(SqlSession sqlSession = MybatisUtils.getSqlSession()){
            //获取mapper接口对象
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            //直接执行mapper接口中写好的方法getUserList()即可
            List<User> userList = userMapper.getUserList();
            for (User user : userList) {
                System.out.println(user);
            }
            //直接执行mapper接口中写好的方法getUserOne()即可
            User userOne = userMapper.getUserOne();
            System.out.println(userOne);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq15347747/article/details/119634443