关键词

mybatis原理概述入门教程

介绍

MyBatis是一种持久层框架,它允许你使用普通SQL查询、存储过程和高级映射,以及高级映射的结果集和连接。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及缓存代码的需求。MyBatis可以与Spring框架集成。

MyBatis原理概述包括以下方面:

1.配置文件

2.映射文件

3.会话工厂

4.SqlSessionFactoryBuilder

5.SqlSessionFactory

6.SqlSession

详解

1.配置文件

在MyBatis中,我们需要定义配置文件:mybatis-config.xml ,这里定义了连接池、缓存、日志等全局配置。我们需要使用SqlSessionFactoryBuilder创建SqlSessionFactory,并且将mybatis-config.xml文件的输入流传递进去。

下面是一个mybatis-config.xml的简单示例:

<configuration>
  <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>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

2.映射文件

映射文件包含了一系列的映射关系,用于定义查询、更新以及其他操作语句。在映射文件中,我们要填写具体的SQL语句,并使用占位符等方式来绑定参数,相当于将数据库的操作写成了一份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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

3.会话工厂

接下来,我们会使用SqlSessionFactory来创建SqlSession实例以及一些其他工厂方法,这些都是基于mybatis-config.xml文件的配置来调用的。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);

SqlSession session = factory.openSession();

4.SqlSessionFactoryBuilder

SqlSessionFactoryBuilder是用于获取SqlSessionFactory接口实例的工具类。

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

5.SqlSessionFactory

SqlSessionFactory是提供SqlSession的地方,是MyBatis的核心之一。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);

6.SqlSession

SqlSession代表与数据库交互的会话,它会根据配置文件获取数据库连接,并将SQL语句执行结果返回给Java代码调用方。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);

SqlSession session = factory.openSession();
Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 1);
session.close();

示例

下面是在MyBatis中,插入一条数据的示例,首先编写一个Mapper的接口:

public interface UserMapper {
    void insert(User user);
}

然后编写一个插入数据的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.example.UserMapper">
    <insert id="insert" parameterType="com.example.User">
        INSERT INTO users
        (user_name, password)
        VALUES (#{userName}, #{password})
    </insert>
</mapper>

接下来,我们可以在Java代码中使用SqlSession来进行数据库的插入操作:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();

User user = new User();
user.setUserName("test");
user.setPassword("123456");
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.insert(user);

session.commit();
session.close();

另外一个例子,查询用户信息:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();

UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(1);
System.out.println(user.getUserName());

session.close();

总结

MyBatis是一个很强大的持久化框架,其灵活性、简易性和快速性使得它在许多项目中都被广泛使用。MyBatis的核心设计思想是SQL和Java代码之间的分离,成为了它的最大优势。在使用MyBatis的过程中,需要重点关注配置文件、映射文件、会话工厂、SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession等核心组件的作用和使用方法。

本文链接:http://task.lmcjl.com/news/13258.html

展开阅读全文