一起来学习Mybatis-入门

数据库 waitig 348℃ 百度已收录 0评论
引言

  本文标题是Mybatis入门,既然是入门,那么意味着它很简单,但是简单!=不重要。如果之前没有接触过Mybatis,强烈建议从此篇看起。关于Mybatis的学习会完成一系列的文章,本着n+1的原则,由少到多,逐渐深入。
  

准备

  新建一个java Web项目,既然要使用Mybatis,首先要做的就是引用Mybatis提供的jar文件。将 mybatis-x.x.x.jar 文件放到项目的 classpath 中即可,通常我们把它放到 WEB-INF/lib 目录下。

这里写图片描述

什么是 classpath ?
类文件路径,src目录不是classpath, WEB-INF/classes,lib才是classpath,classes文件夹中存放src目录下java文件编译之后的class文件,xml、properties等资源配置文件。lib通常放置我们所引用的外部类文件。

  当然,你也可以使用 Maven 来管理项目,在pom.xml文件中添加下面的依赖。没有使用过 Maven 也没有问题,直接把这部分忽略就好,它和我们理解mybatis没有直接关系。

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

  因为我们是对数据的操作,所以需要添加相应的数据库驱动包,方法和上面一样,这里以MySQL为例。

mysql-connector-java-x.x.x-bin.jar
分析

  在Mybatis中,SqlSession类是核心,想要执行SQL语句就需要先创建一个SQL会话对象。Mybatis为此提供了一个工厂模式的实现来完成SqlSession的初始化。大致流程如下:

  也就是说我们需要先使用 SqlSessionFactoryBuilder 来生成 SqlSessionFactory ,继而得到 SqlSession 对象来执行已映射的SQL语句。

实现

数据表 t_user

  在 MySQL 上新建一个名为 “mybatistest”的数据库,并为它添加用户信息表 t_user:

这里写图片描述

实体类 UserEntity

  添加一个实体类,与t_user表相对应。

public class UserEntity {

    private String userID;  
    private String userType;

    public String getUserID() {
        return userID;
    }

    public void setUserID(String userID) {
        this.userID = userID;
    }

    public String getUserType() {
        return userType;
    }

    public void setUserType(String userType) {
        this.userType = userType;
    }
}

UserDao

  为了便于维护与拓展,添加了一个UserDao的接口类,来描述对t_user数据表的操作。

public interface UserDao {  
    public UserEntity selectUserByID(String id);
}

user-mapper.xml

  既然声明了接口,自然需要来实现接口中方法,在Mybatis中,实现写在了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.UserDao">

  <select id="selectUserByID" resultType="entity.UserEntity">
    select * from t_user where userID = #{id}
  </select>

</mapper>

创建 SqlSessionFactory

  我们这次通过 XML 文件来构建 SqlSessionFactory 的实例。同样的我们把 XML 文件放置到 classpath 下,便于查找。这里以 configuration.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"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>

  <!-- SQL映射文件,这部分先不用理会,后面会用到 -->
  <mappers>
    <mapper resource="resources/user-mapper.xml"/>
  </mappers>
</configuration>

  准备好了配置文件,现在我们来创建一个 SqlSessionFactory :

//配置文件路径,因为是在classpath下,所以填写文件名就行
String resource = "configuration.xml";
//用字节流的方式读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
//构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

测试

  现在基本的工作已经完成了,来测试一下。我们已经有了一个 SqlSessionFactory对象,用它打开一个 SqlSession 就能执行接口中的方法了。

SqlSession sqlSession = sqlSessionFactory .openSession();
try {
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    UserEntity user = userDao.selectUserByID("1");
    System.out.println(user.getUserType());
} finally {
    sqlSession.close();
}
小结

  虽然是Java Web项目,也无需启动Tomcat,通过接收一个Web请求来对Mybatis是否连接成功进行测试。可以使用JUnit框架进行单元测试,省心省力。

  未完待续。。。


本文由【waitig】发表在等英博客
本文固定链接:一起来学习Mybatis-入门
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)