mybatis hello world

mybatis hello world

1、文件目录

注意点:dao层接口名要与mapper配置文件同名

2、数据库以及实体类

数据库:

CREATE DATABASE `mybatis`;

USE `mybatis`;

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `user`(`id`,`name`,`pwd`) values (1,'陈修行','123456'),(2,'张三','abcdef'),(3,'李四','987654');

实体类:

package entity;

public class User {

    private int id;
    private String name;
    private String pwd;
	//Get
    //Set
    //constructor
}

3、核心文件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.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="dao/UserMapper.xml"/>
    </mappers>
</configuration>

注意点:

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

mapper标签为mapper注册中心,所有mapper映射文件都在这里注册。

resource属性为mapper.xml的路径名,使用“/”分割而不是“.”

4、静态资源过滤问题:

如果mapper.xml不在目录resources下,maven可能会对静态资源进行过滤导致打包的时候target目录找不到mapper.xml

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

5、 编写dao层接口以及对应的mapper.xml

dao层查询接口UserMapper

package dao;

import java.util.List;

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

对应的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">
<mapper namespace="dao.UserMapper">
    <select id="selectUser" resultType="entity.User">
        select * from user
    </select>
</mapper>

注意点:

  1. namespace命名空间为指定的接口名

  2. id为指定的方法名

  3. resultType为返回类型的全限定名

6、使用mybatis进行一次查询

  1. 获取mybatis-config.xml的文件流

    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    
  2. 通过获取的文件流生成sqlSessionFactory

    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
  3. 通过sqlSessionFactory得到SqlSession

    SqlSession session = sqlSessionFactory.openSession()
    
  4. 调用SqlSession的查询方法selectList并且声明接口和接口内的具体方法

    List<User> users = session.selectList("dao.UserMapper.selectUser");
    
  5. 输出

  1. 大功告成

7、整合

因为查询中的1、2、3步总是固定的,且SqlSessionFactory全局唯一,不必每次使用都创建。所以可以打包成一个工具类以便于每次使用时调用。

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

    private static SqlSessionFactory sqlSessionFactory;

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

    //获取SqlSession连接
    public static SqlSession getSession(){
        return sqlSessionFactory.openSession();
    }

}

使用时只需要调用工具类的getSession方法就可以获得SqlSession

SqlSession session = MybatisUtils.getSession();

8、完成

第一个mybatis程序就成功的运行了,没有多余的前端页面掺杂,告别了复杂的jdbc代码。是学习SSM框架比较好的开始。

posted @ 2021-05-19 09:56  陈修行  阅读(68)  评论(0)    收藏  举报