пятница, 8 ноября 2013 г.

Введение в MyBatis

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

Для конфигурации MyBatis может использовать XML или аннотации.

Каждое приложение с использованием MyBatis сосредоточено вокруг экземпляра SqlSessionFactory. Экземпляр этого класса можно получить, используя SqlSessionFactoryBuilder, используя либо конфигурационный класс XML, либо же пользовательский класс с параметрами конфигурации.

Простой пример 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="${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>

В секции mappers указываются пути к файлам, в которых содержится маппинг сущностей на таблицы БД.

Чтобы напрямую обращаться к базе данных (выполнять различные запросы) от SqlSessionFactory надо получить экземпляр SqlSession

SqlSession session = sqlSessionFactory.openSession(); 
try { 
  BlogMapper mapper = session.getMapper(BlogMapper.class); 
  Blog blog = mapper.selectBlog(101); 
} finally { 
  session.close(); 



Где BlogMapper это интерфейс, в котором описаны все методы, для работы с БД.

Вот фрагмент простого тестового класса, который получает доступ к SqlSession и работает с бд

public static void main(String[] args){

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
Reader reader;
try {
reader = Resources.getResourceAsReader("Configuration.xml");
SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(reader);
SqlSession sqlSession = sessionFactory.openSession();
try{
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
long id  = 1L;
User user = userMapper.findById(id);
} finally {
sqlSession.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

Комментариев нет:

Отправить комментарий