Интеграция Mybatis
Mybatis — это отличный фреймворк, но у него есть и недостатки.
Один плагин для разбивки на страницы, один универсальный mapper могут предложить так много вариантов использования и имеют такую высокую популярность, что этого достаточно, чтобы указать на их слабые места.
Так можно ли интегрировать Mybatis для независимого управления SQL при использовании этого компонента?
Конечно, ответ положительный.
Конфигурация Mybatis
Прежде всего, конечно, необходимо настроить Mybatis, в этом нет ничего нового по сравнению с обычным использованием, вы можете найти информацию самостоятельно, здесь приведены простые настройки.
Добавить зависимости:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${version}</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${version}</scope>
</dependency>
Объявить sqlSessionFactory
Mybatis:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="mybatis/mybatis-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
Затем внедрить sqlSessionFactory
в наш jdbcEngine
:
<bean id="jdbcTemplateEngine" class="com.sonsure.dumper.springjdbc.config.JdbcTemplateEngineFactoryBean">
<property name="mybatisSqlSessionFactory" ref="sqlSessionFactory"/>
<property name="dataSource" ref="dataSource"/>
</bean>
Из вышеизложенного видно, что нам нужно только получить sqlSessionFactory
от Mybatis и внедрить его в jdbcEngine
, остальное в Mybatis нас не волнует.
Это также означает, что исходные методы и интерфейсы Mybatis не затронуты.
Использование
В XML объявить метод SQL, все это собственные вещи Mybatis, и в написании нет никакой разницы, если вы используете аннотации Mybatis, это тоже возможно:
<?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.sonsure.mybatis.mapper.UserMapper">
<!-- Здесь используется sql с использованием имени класса и имени свойства -->
<select id="getUser">
SELECT * FROM UserInfo WHERE userInfoId = #{id} and loginName = #{loginName}
</select>
<!-- Здесь sql использует имя таблицы и имя столбца напрямую -->
<select id="getUserSql">
SELECT * FROM user_info WHERE user_info_id = #{id} and login_name = #{loginName}
</select>
</mapper>
Вызвать в коде, указав команду Mybatis id, пространство имён в соответствии с реальной ситуацией можно опустить:
// Здесь обратите внимание, что SQL, написанный по умолчанию в Mybatis, также будет преобразован из имени класса, имени атрибута в имя таблицы SQL, имя столбца
UserInfo user = jdbcDao.myBatisExecutor()
.command("getUser")
.parameter("id", 9L)
.parameter("loginName", "name-9")
.singleResult(UserInfo.class);
// Здесь указано nativeCommand, SQL не будет преобразовываться
Map<String, Object> params = new HashMap<>();
params.put("id", 9L);
params.put("loginName", "name-9");
UserInfo user = jdbcDao.myBatisExecutor()
.command("getUserSql")
.parameters(params)
.nativeCommand()
.singleResult(UserInfo.class);
Этот способ вызова позволяет Mybatis больше не писать код, связанный с разбивкой на страницы и т. д., если это необходимо, просто укажите параметры разбивки на страницы для автоматического завершения разбивки на страницы:
Page<UserInfo> page = jdbcDao.myBatisExecutor()
.command("queryUserList")
.paginate(1, 10) // первая страница, взять 10 записей
.pageResult(UserInfo.class);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )