Проект Mybatis-Spring
В настоящее время большинство интернет -проектов Java создаются с использованием Spring MVC + Spring + Mybatis.
Использование Spring IOC может эффективно управлять различными ресурсами Java и выполнять функцию Plug-and-Play; В рамках Spring AOP-структуры транзакции базы данных могут быть поручено управление пружиной, исключая большую часть кода транзакции, а также в сочетании с высокой гибкой, настраиваемой и оптимизированными характеристиками SQL Mybatis, можно создать большие веб-сайты высокой производительности.
Нет сомнений в том, что две основные рамки, Mybatis и Spring, стали основной структурой комбинации интернет -технологии Java. Они выдержали тест большого объема данных и крупномасштабных запросов и широко использовались в интернет-системах. Использование Mybatis-Spring делает бизнес-слой и модельный слой лучше разделены. В то же время, использование Mybatis в весенней среде проще, экономя много кода, и вы даже можете избежать использования таких объектов, как SQLSessionFactory и SQLSession, потому что Mybatis-Spring инкапсулирует их для нас.
Выдержка из: "Java EE Internet Lightweight Framework Integrated Development"
Шаг 1: Создайте тестовый проект
Первым шагом является создание нового проекта веб -проекта под названием [MyBatisandSpring] в идее:
Затем создайте 4 пустых пакета в [SRC]:
Затем создайте новую папку источника [config], чтобы разместить различные файлы конфигурации ресурсов:
Затем создайте новую папку безопасности [Web-Inf] по умолчанию в папке [Web] и создайте [классы] и [LIB] под ней, и измените место вывода проекта в соответствии с [Classes]:
Полная начальная структура проекта заключается в следующем:
Шаг 2: Внедрение пакета JAR -зависимости
Второй шаг - подготовить пакет JAR в зависимости от проекта:
Поместите пакет JAR, перечисленный выше в папке [LIB] в папке [Web-Inf], а затем добавьте зависимости.
Шаг 3: Напишите файлы конфигурации пружины
Третий шаг - написать файл конфигурации пружины:
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.org/schema/beans/springbeans.s.xsspring.s.s.xspring.s.xspring.s.spring.s.spring.s.s.spring.s.spring.s.spring.s.spers.s.spring.s.spring.s.spers.s.spers.s.spring.s.spers.s.spers.s.spersbembembems. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!-Загрузка файла конфигурации-> <context: propertive propectorer =" classpath: db.properties id = "dataSource"> <name = "griverclassname" value = "$ {jdbc.driver}"/> <name = "url" value = "$ {jdbc.url}"/> <name = "username" value = "$ {jdbc.username}"/> <name = value = "$ {jdbc.username}"/> <name = "value =" $ {Jdbc.username} "/> <name =" value = "$ {JDBC.Username}"/> <name = "value =" $ {JDBC.USERNAME} "/> <name =" value = "$" <!-SQLSessionFactory-> <Bean Id = "sqlSessionFactory"> <!-Загрузите файл конфигурации mybatis-> <name = "configlocation" value = "mybatis/sqlmapconfig.xml"/> <!-Источник данных-> <propation = "dataSource" Ref = "DataSource"/> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean>Шаг 4: Напишите файл конфигурации mybatis
Шаг 4: Напишите глобальный файл конфигурации Mybatis в рамках пакета [mybatis] sqlmapconfig.xml:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Конфигурация doctype public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <fiply> <! <Настройка name = "LazyLoadEnabled" value = "true"/> <!-Изменить активную загрузку на пассивную загрузку (то есть загрузка по требованию)-> <Настройка name = "Aggervessivelazyling" value = "false"/> <!-Включите глобальный переключатель кэша (вторичный кэш) значение default value-> <name = "cacheenabled" value = "true"/> </> <//> <//> <//> <//> <//> <//> <//> <//> <//> <//> <//> <//> <//> <//> </>- <TypeAliases> <name package = "cn.wmyskxz.pojo"/> </typealiases> <!-Загрузите файл карты-> <Mappers> <!-Загрузите один файл карты за раз с помощью метода ресурса-> <mapper resource = "sqlmap/usermapper.xml"/> <! name = "cn.wmyskxz.mapper"/> </mappers> </configuration>
В этом файле конфигурации:
Шаг 5: Напишите Mapper и другие файлы конфигурации
Шаг 5: Напишите файл отображения Mapper. Здесь имя файла отображения Mapper по -прежнему определяется как «usermapper.xml» (что согласуется с конфигурацией в sqlmapconfig.xml). Чтобы проверить эффект, настроена только одна карта SQL Class Class:
<? 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 =" test ">" xelectby '> "electby ydrase'>" xelectby ydryby ydryby ydrybydbydbyd '> "electbybybydrybydrybydryd'>" ParameterType = "_ int" resultType = "user"> select * of user where id = #{id} </select> </mapper>В этой конфигурации выходные параметры отображаются с «пользователем», потому что класс объектов в пакете «cn.wmyskxz.pojo» был настроен в sqlmapconfig.xml перед использованием псевдоним (то есть, название класса с нижним инициалом), так что вам просто нужно создать пользователь класса Java, соответствующий «Founderbyid». "Cn.wmyskxz.pojo" Пакет:
пакет cn.wmyskxz.pojo; import java.io.serializable; Пользовательский пользовательский класс реализует serializable {private int id; частное имя пользователя; / * Getter и Setter */}Реализация сериализуемого интерфейса предназначена для подготовки к последующему использованию динамического прокси -сервера Mapper, и здесь не используется динамический прокси.
Информация об подключении базы данных настроена в ресурсе базы данных «DB.Properties» и настроена в форме «key = value». Строка использует "$ {}", чтобы получить значение, соответствующее ключу:
jdbc.driver = com.mysql.jdbc.driverjdbc.url = jdbc: mysql: // localhost: 3306/mybatis? Характерподинг = utf-8jdbc.username = rootjdbc.password = root
Кроме того, конфигурация журнала такая же, как и предыдущая конфигурация, поэтому я прямо вставил ее:
# Глобальная конфигурация журнала# В среде разработки, уровень журнала должен быть установлен для отладки, а производственная среда должна быть установлена на Info или errorlog4j.rootlogger = Debug, Stdout# Консоль вывод ... log4j.appender.stdout = org.apache.log4j.consoleappenderlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionpattern =%
Шаг 6: Напишите слой DAO
Шаг 6: Напишите уровень объекта доступа данных.
Поскольку этот проект только запрашивает пользователя пользователя, в уровне DAO есть только один класс. Интерфейс интерфейс слоя DAO создается в пакете «Cn.wmyskxz», который определяет метод FindeSerbyID, а параметр - значение идентификатора пользователя (int type):
Пакет cn.wmyskxz.dao; import cn.wmyskxz.pojo.user; public interface userdao {// Запрос информации пользователя на основе идентификатора публичного пользователя finduserbyid (int id) throws;}Затем создайте пользовательский интерфейс Interface Class Class UserDaoImpl в одном и том же пакете:
Пакет cn.wmyskxz.dao; import cn.wmyskxz.pojo.user; import org.apache.ibatis.session.sqlsession; импорт org.mybatis.spring.support.sqlsessiondaosupport; public userDaImpl extends sqlSessionDaOsPortmoSport atemplionDride User finduserbyid (int id) выбрасывает исключение {// Унаследовать класс sqlSessionDaoSupport и пройти это. GetSqlSession () Получить sqlSession sqlSession sqlSession = this.getSqlSession (); Пользователь пользователь = sqlSession.selectone ("test.finduserbyid", id); вернуть пользователь; }}Есть несколько объяснений:
<!-Оригинальный интерфейс DAO-> <Bean id = "userDao"> <name = "sqlSessionFactory" ref = "sqlSessionFactory"/> </bean>
ПРИМЕЧАНИЕ. После того, как класс реализации DAO наследует родительский класс SQLSessionDaosupport, нет необходимости определять метод для получения класса экземпляра сеанса SQLSession. Родительский класс по умолчанию будет загружать информацию об источнике данных и предоставит метод получения класса SQLSession.
Шаг 7: Написать класс теста службы
Создать тестовый класс [userservicetest] в пакете "cn.wmyskxz.test":
Пакет cn.wmyskxz.test; import cn.wmyskxz.dao.userdao; import cn.wmyskxz.pojo.user; импорт org.junit.before; импорт org.junit.test; импорт org.spramework.context.application. org.springframework.context.support.classpathxmlapplicationContext; открытый класс userserviceTest {private ApplicationContext ApplicationContext; // Сначала получить объект файла конфигурации пружины перед выполнением метода тестирования // аннотация @before вызывает этот метод перед выполнением всех методов испытаний этого класса @before public void setup () Throws Exception {ApplicationContext = new ClassPathxMlApplicationContext ("classPath: spring context.xml"); } @Test public void testFinduserById () Throws Exception {// Получить объект userDao путем настройки объектов ресурсов userDao userDao = (userDao) ApplicationContext.getBean ("userDao"); // позвонить пользователю пользователь пользователь = userdao.finduserbyid (1); // Выходная информационная система пользователя.out.println (user.getid () + ":" + user.getusername ()); }}Запустите метод испытаний, и результаты выходных данных следующие:
Динамическая прокси + аннотация реализация
Приведенная выше программа не завершена с использованием динамического прокси и аннотаций Mapper. Давайте попробуем использовать динамический прокси и аннотации:
Шаг 1: Напишите пользователь Queermapper
Создайте новый прокси -интерфейс [userQueryMapper] под [Mapper] и используйте аннотации:
Пакет cn.wmyskxz.mapper; import cn.wmyskxz.pojo.user; import org.apache.ibatis.annotations.select; публичный интерфейс userquerymapper {@select ("select * из пользователя, где id = #{id}»)Примечание. По умолчанию имя боба является userQueryMapper (то есть первая буква - строчная)
Теперь, когда у нас есть класс прокси, нам нужно уведомить Spring, чтобы сканировать этот класс здесь. Mapper должен использовать специальный сканер для сканирования объекта конфигурации:
<!-сканер Mapper-> <Bean> <!-сканировать компоненты под пакетом CN.Wmyskxz.mapper-> <name = "basepackage" value = "cn.wmyskxz.mapper"/> </bean>
Шаг 2: Напишите тестовый класс
На этот раз мы больше не получаем объект userdao, но определенный объект Mapper Proxy userQueryMapper:
Пакет cn.wmyskxz.test; import cn.wmyskxz.mapper.userquerymapper; import cn.wmyskxz.pojo.user; import org.junit.before; импорт org.junit.test; импорт org.spramework.context.applicationconcontext; org.springframework.context.support.classpathxmlapplicationContext; открытый класс userserviceTest {private ApplicationContext ApplicationContext; // Сначала получить объект файла конфигурации пружины перед выполнением метода тестирования // аннотация @before вызывает этот метод перед выполнением всех методов испытаний этого класса @before public void setup () Throws Exception {ApplicationContext = new ClassPathxMlApplicationContext ("classPath: springcontext.xml"); } @Test public void testfinduserbyid () throws exception {// Получить объект userDao путем настройки объектов ресурсов userQueryMapper userQueryMapper = (userQueryMapper) ApplicationContext.getBean ("userQueryMapper"); // вызов метод пользователя userdao user = userquerymapper.finduserbyid (1); // Выходная информационная система пользователя.out.println (user.getid () + ":" + user.getusername ()); }}Запустите метод испытания и получите правильный результат:
Вы можете видеть, что результаты запроса такие же, как и у предыдущих агентов, не являющихся маппером.
Суммировать
Вышеуказанное является идеальным методом интеграции между Mybatis и Spring, введенным вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!