蒙圈的备忘录:MyBatis基本使用

蒙圈的备忘录:MyBatis基本使用


内容:

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

简单来说就是一个增强的JDBC,用来访问数据库执行增删改查。

这里有一个MyBatis的中文网:

https://mybatis.net.cn/

使用步骤

一 :使用 Maven 来构建项目,在 pom.xml 文件中添加依赖:

<!--mybatis 依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>
<!--mysql驱动依赖-->
    <dependency>
      <groupId>Mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.26</version>
    </dependency>

二 :

2.1 创建Dao接口(定义你操作数据库的方法)

package org.example.dao;

import org.example.domain.Student;

import java.util.List;

public interface StudentDao {
    public List<Student> selectStudent();
}

2.2 创建Dao接口对应的XML 映射文件

XML 映射文件也叫sql映射文件
这是用来写sql语句的,和接口中方法对应的sql语句

<?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="org.example.dao.StudentDao.java">
    <select id="selectStudent" resultType="org.example.domain.Student">
        select id,name,email,age from student order by id
    </select>
</mapper>

三 :创建MyBatis的主配置XML文件

XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。

<?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="mysql1">
        <environment id="mysql1">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED"> 
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/example/dao/StudentDao.xml"/>
    </mappers>
</configuration>

四 :添加一个简单的工具类


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 {

    private  static  SqlSessionFactory factory = null;
    static {
        String config="mybatis.xml"; // 需要和你的项目中的文件名一样
        try {
            InputStream in = Resources.getResourceAsStream(config);
            //创建SqlSessionFactory对象,使用SqlSessionFactoryBuild
            factory = new SqlSessionFactoryBuilder().build(in);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    //获取SqlSession的方法
    public static SqlSession getSqlSession() {
        SqlSession sqlSession  = null;
        if( factory != null){
            sqlSession = factory.openSession();// 非自动提交事务
        }
        return sqlSession;
    }
}

六 :使用mybatis的动态代理机制

使用SqlSession.getMapper(dao接口)方法获取代理对象

 @Test
    public void testSelectStudents(){
        /**
         * 使用mybatis的动态代理机制, 使用SqlSession.getMapper(dao接口)
         * getMapper能获取dao接口对于的实现类对象。
         */
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao  =  sqlSession.getMapper(StudentDao.class);
 
        //调用dao的方法, 执行数据库的操作
        List<Student> students = dao.selectStudents();
        for(Student stu: students){
            System.out.println("学生="+stu);
        }
    }

七 :遇到的问题及注意事项

5.1中文乱码问题

这里最好加上这段配置,可以避免你从数据库导出来的内容中文乱码问题

-Dfile.encoding=GBK

蒙圈的备忘录:MyBatis基本使用

5.2 tarage/classes下没有生成对应配置文件问题

运行MyBatis时,系统编译的是tarage/classes下的配置文件,而不是我们自己创造的,IDEA似乎不会自动生成,我们需要在Maven的pom.xml配置文件的标签内加上一些配置

<resources>
      <resource>
        <directory>src/main/java</directory><!--所在的目录-->
        <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>

蒙圈的备忘录:MyBatis基本使用

上一篇:多注解的项目分层(面试题)


下一篇:设计模式——代理模式