Описание тега mybatis

MyBatis - это платформа для сопоставления объектов с реляционными базами данных с упором на высокую производительность и простоту. Дескрипторы или аннотации XML связывают объекты с операторами SQL или хранимыми процедурами.

MyBatis - это платформа для отображения объектов (Java и.NET) в реляционные базы данных с упором на простоту. Объекты связаны с операторами SQL и / или хранимыми процедурами с помощью файлов дескрипторов XML. В отличие от фреймворков ORM MyBatis отображает не объекты Java в таблицы базы данных, а методы в операторы SQL.

MyBatis легок и довольно прост в использовании, поскольку единственные задействованные части - это собственные объекты, XML и SQL. Он также интегрируется со средой Spring.

Пример файла сопоставления:

<sqlMap namespace="CUSTOMER">
    <resultMap class="com.example.Customer" id="CustomerMapping">
        <result column="CUSTOMER_ID" property="customerId" jdbcType="DECIMAL" />
        <result column="NAME" property="name" jdbcType="VARCHAR" />
    </resultMap>
    <select id="CUSTOMER.selectByPrimaryKey" parameterClass="java.lang.Long" resultMap="CustomerMapping">
        <![CDATA[  
          SELECT customer_id,
                 name
            FROM customer
           WHERE customer_id = #id:DECIMAL#
        ]]>
    </select>
</sqlMap>

Простое использование:

Интерфейс:

package org.mybatis.example;

public interface BlogMapper {
  @Select("select * from Blog where id = #{id}")
  Blog selectBlog(int id);
}

Использование интерфейса:

BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);

Операторы и сопоставления 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" parameterType="int" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

Весенняя интеграция:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
</bean>

<bean id="blogMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
  <property name="mapperInterface" value="org.mybatis.example.BlogMapper" />
</bean>

<bean id="blogService" class="org.mybatis.example.BlogServiceImpl">
  <property name="blogMapper" ref="blogMapper" />
</bean>

В коде вы просто используете интерфейс blogMapper:

public class BlogServiceImpl implements BlogService {

  private BlogMapper blogMapper;

  public void setBlogMapper(BlogMapper blogMapper) {
      this.blogMapper = blogMapper;
  }

  public void doSomethingWithABlog(int blogId) {
      Blog blog = blogMapper.selectBlog(blogId);
      // ...
  }
}

Ресурсы