第一次使用MyBatis

MyBatis学习第一步

一:

我们要导入maven依赖置于pom.xml中:

我们需要mysql与mybatis的依赖 maven仓库地址

<!--        mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
 <!--        mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>

毫无疑问学一门新知识他的官方文档是必不可少的,mybatis官方文档

image-20210117124135372

二:

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

driver, url, username, password 为主动配置因素

<?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/mybatis?&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/wang/dao/UserMapper.xml"  />
    </mappers>
</configuration>

2.1

建议文件名字与官方一致

image-20210117125042290

2.2

  • 从 XML 中构建 SqlSessionFactory

  • 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

    从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

    public class MybatisUtils {
    
        private static SqlSessionFactory sqlSessionFactory;
        static{
              //使用MyBatis第一步, 获取sqlSessionFactory
            try {
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //既然有了SqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实列
        //SqlSession 完全包含了面向数据库执行SQL命令所需的所有方法
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }
    

image-20210117141908683

三:

探究已映射的 SQL 语句,接下俩我们做一个用户查询的例子:


3.1

首先准备好数据库

image-20210117142600128

建立相应的实体类

image-20210117142455155

建立相应的Mapper

userDao

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

UserMapper

<?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.wang.dao.UserDao">
    <select id="getUserList" resultType="com.wang.pojo.User">
    select * from mybatis.user
  </select>
</mapper>

这里的Dao均为更名为Mapper, id为方法名 , namespace为全限定名,resultType 为结果集类型

3.2

最后我们进行测试

public class UserDaoTest {
    @Test
        public void test(){
            //第一步,获得sqlSession对象
            SqlSession sqlSession=null;
            try {
                sqlSession = MybatisUtils.getSqlSession();
                UserDao mapper = sqlSession.getMapper(UserDao.class);
                List<User> userList = mapper.getUserList();
                for (User user:userList) {
                    System.out.println(user);
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            finally {
                //关闭sqlSession
                sqlSession.close();
            }
    }
}

四:你可能遇到的错误

  • 配置文件没有注册
  • 绑定接口不对
  • 方法名不对
  • 返回类型不对
  • Maven导出资源问题
  • 核心配置文件中不能有中文注释
  • jdbc缺少时区配置
posted @ 2021-01-17 14:43  IanW  阅读(88)  评论(0编辑  收藏  举报