一、MyBatis入门案例

前言

https://mybatis.org/mybatis-3/zh/getting-started.html

1.每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为核心。
2.SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。
3.SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
4.从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
	String resource = "org/mybatis/example/mybatis-config.xml";
	InputStream inputStream = Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
5.既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
	SqlSession session = sqlSessionFactory.openSession();

一、创建一个Maven项目,在pom文件中导入相关依赖jar包。

<dependencies>
	<!--mysql-->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>8.0.19</version>
	</dependency>
	<!--mybatis-->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.5.3</version>
	</dependency>
	<!--junit-->
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>4.12</version>
	</dependency>
</dependencies>

二、在resources文件夹下编写mabatis和数据源配置文件。
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>
    <!--引入db.properties-->
    <properties resource="db.properties"/>

    <!--配置数据源-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置mapper.xml路径-->
    <mappers>
        <mapper resource="com/zhy/dao/UserMapper.xml"/>
    </mappers>
</configuration>

db.properties:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username=root
password=123456

补充:解决Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration.Cause: java.io.IOException: Could not find resource com/zhy/dao/UserMapper.xml异常。

<build>
        <!--扫描到resources下的xml等资源文件-->
        <!--解决Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration.
        Cause: java.io.IOException: Could not find resource com/zhy/dao/UserMapper.xml-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>

三、创建mybatis工具类,获取sqlSession。

/**
 * mybatis工具类,获取sqlSession
 */

public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

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

四、编写实体类。

public class User {
    private Integer id;
    private String name;
    private String password;
    private String telephone;
    private String gender;

    public User() {
    }

    public User(Integer id, String name, String password, String telephone, String gender) {
        this.id = id;
        this.name = name;
        this.password = password;
        this.telephone = telephone;
        this.gender = gender;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + ", telephone='" + telephone + '\'' + ", gender='" + gender + '\'' + '}';
    }
}

五、编写接口,编写抽象方法。

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

六、编写Mapper.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">
<mapper namespace="com.zhy.dao.UserMapper">

    <select id="getUserList" resultType="com.zhy.entity.User">
        SELECT id,name,telephone,gender FROM user
    </select>

</mapper>

七、编写测试类

@Test
public void test(){
    //1.获取sqlSession
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    //2.执行SQL
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //3.获取数据并遍历
    List<User> userList = mapper.getUserList();
    for (User user : userList){
        System.out.println(user);
    }
    //4.关闭sqlSession
    sqlSession.close();
}

猜你喜欢

转载自blog.csdn.net/rookie__zhou/article/details/108742886