Я суммировал три метода в предыдущей статье, но есть два метода, которые аннотируют SQL. Этот метод довольно сбивает с толку, поэтому все его не очень много используют. Давайте обобщу два обычно используемых метода:
1. Динамический класс реализации прокси без написания DAO
Этот метод относительно прост. Вам не нужно реализовать уровень DAO, вам просто нужно определить интерфейс. Вот просто для записи файла конфигурации, поэтому программа очень проста:
1. Общая структурная диаграмма:
2. Три файла конфигурации и один файл отображения
(1) Настройка входа в программу и конфигурации контроллера интерфейса web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" = "webapp" = "webapp" = "webapp_dapp_3_0.0. <display-name>website1</display-name> <!-- Set up listening and automatically assemble the configuration information of ApplicationContext when the web container starts --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Set Spring container loading configuration file path --> <context-param> <param-name> contextConfiglocation </param-name> <param-value> classPath: config/springmvc-servlet.xml, classpath: config/applicationContext.xml </param-value> </context-param> <!-Фильтр кодирования символов-> <Filter> <Filter-name> inCodingFilter </filemoding> <> <Filter> <Filter-Name> inCodingFilter </filemoding> <> <Filter> <Filter-Name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <!-- Front-end controller--> <servlet> <servlet-name>springmvc</servlet-name> <Servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <init-param> <param-name> contextConfiglocation </param-name> <value> classpath: config/springmvc-servlet.xml </param-value> </init-param> <! <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> springmvc </servlet-name> <!-запрос на перехват-> <url-pattern>*. Do </url-pattern> </servlet-mapping> <shodiall-file> <shodyfile> index.h.helpatml> </servlet> <shodiall-file> <werved> <werveload> index.htm </wervedied-file> <bellage-file> index.jsp </werveding-file> <selcoveryfile> default.html </wervedied-file> <fellow-file> default.htm </werveding-file> <welcelport-file> default.jsp </werveding-file> </welcome-file> </web --pape> default.jsp </werveding file> </welcome-file> </web --papp>
(2) Уровень управления сканированием, автоматическая инъекция и конфигурация просмотра Springmvc-servlet.xml
<? 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: aop = "http://www.springframework.org/schema/aop" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframe.orns: mvc =" http://www.springframe.ormema. xmlns: util = "http://www.springframework.org/schema/util" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: jdbc = "http://www.sprame». xmlns: cache = "http://www.springframework.org/schema/cache" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.orgemam. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/Util http://www.sprmeframe.org/schema/til/spring-ut3.1.xsd3.1.xsd3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd http://www.springframework.org/schema/cache http://www.sprmemawork.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "> <!-Драйвер аннотации-> <MVC: Annotation-Diven/> <!-<Контекст: аннотационный config/>-> <! <Контекст: Component-Scan Base-package = "com.website.controller"> </context: component-scan> <!-View Parser-> <bean id = "viewresolver"> <name = "prefix" value = "/web-inf/view/"> </property> name = "suffix" value = ".
(3) Источник данных, автоматическое сканирование и инъекцию службы, пружина управляла mybatissqlsessionFactory, динамический прокси -сервер интерфейса DAO, и конфигурация транзакции ApplicationContext.xml
Здесь будет несколько файлов конфигурации
1) Одиночный источник данных, Dynamic Proxy не устанавливает значения двух свойств SQLSessionFactoryBeanName или SQLSessionTemplateBeanName при реализации интерфейса DAO Layer.
<? 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: tx = "http://www.springframework.org/schema/tx" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.springframework.orbema. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Нагрузка конфигурации jdbc file-> <context: property placeholder =" classpath: db.properties "! id = "dataSource"> <name = "driverClassName"> <datule> $ {jdbc.driverclassname} </value> </property> <property name = "url"> <value> $ {jdbc.url} </value> </property> <property name = "username"> <value> $ {jdbc.Usr. name = "password"> <dulch> $ {jdbc.password} </value> </property> </bean> <!-Включите конфигурацию аннотации, а именно Autowried-> <!-<Контекст: аннотация-конфиг/>-> <!-Фактически, компонент-сканирование имеет функцию аннотации-конфига, то есть, то есть регистр. Base-package = "com.website.service" /> <!-При использовании mybatis, Spring использует sqlSessionFactorybean для управления mybatis 'sqlSessionFactory-> <bean id = "sqlSessionFactory"> <ploys name = "dataSource" ref = "dataSource" /> <! <!-Путь файла карты классов объектов, только один из них записан до конца, и несколько из них могут быть заменены mybatis/*. Xml-> <name = "mapperlocations" value = "classpath: mybatis/usermapper.xml"/> </bean> <! Bean = "sqlSessionFactory"/> </constructor-arg> </bean>-> <!-Динамическая реализация прокси не должна писать DAO-> <Bean Id = "MapperScannerConfigurer"> <!-Здесь базовый интерфейс DAO-слоя указывается, а интерфейс DAO не нуждается в себе, чтобы реализовать само по себе. value = "com.website.dao" /> <!-Если есть только один источник данных, вы не можете указать его, но если есть несколько источников данных, вы должны указать его-> <!-<name = "sqlSessionFactoryBeanname" Value = "sqlSessionFactory" />-> <! name="sqlSessionTemplateBeanName" value="sqlSession" /> --> </bean> <!-- Transaction Manager--> <bean id="transactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- Using full annotation transaction--> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>2) Настройка значения свойства SQLSessionFactoryBeanName для одного источника данных
<? 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: tx = "http://www.springframework.org/schema/tx" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.springframework.orbema. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Нагрузка конфигурации jdbc file-> <context: property placeholder =" classpath: db.properties "! id = "dataSource"> <name = "driverClassName"> <datule> $ {jdbc.driverclassname} </value> </property> <property name = "url"> <value> $ {jdbc.url} </value> </property> <property name = "username"> <value> $ {jdbc.Usr. name = "password"> <dulch> $ {jdbc.password} </value> </property> </bean> <!-Включите конфигурацию аннотации, а именно Autowried-> <!-<Контекст: аннотация-конфиг/>-> <!-Фактически, компонент-сканирование имеет функцию аннотации-конфига, то есть, то есть регистр. Base-package = "com.website.service" /> <!-При использовании mybatis, Spring использует sqlSessionFactorybean для управления mybatis 'sqlSessionFactory-> <bean id = "sqlSessionFactory"> <ploys name = "dataSource" ref = "dataSource" /> <! <!-Путь файла карты классов объектов, только один из них записан до конца, и несколько из них могут быть заменены mybatis/*. Xml-> <name = "mapperlocations" value = "classpath: mybatis/usermapper.xml"/> </bean> <! Bean = "sqlSessionFactory"/> </constructor-arg> </bean>-> <!-Динамическая реализация прокси не должна писать DAO-> <Bean Id = "MapperScannerConfigurer"> <!-Здесь базовый интерфейс DAO-слоя указывается, а интерфейс DAO не нуждается в себе, чтобы реализовать само по себе. value = "com.website.dao" /> <!-Если есть только один источник данных, вы не можете указать его, но если есть несколько источников данных, вы должны указать его-> <name = "sqlSessionFactoryBeanName" value = "sqlSessionFactory" /> <! name="sqlSessionTemplateBeanName" value="sqlSession" /> --> </bean> <!-- Transaction Manager--> <bean id="transactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- Using full annotation transaction--> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>3) Настройка значения свойства SQLSessionTemplateBeanName для одного источника данных
<? 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: tx = "http://www.springframework.org/schema/tx" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.springframework.orbema. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Нагрузка конфигурации jdbc file-> <context: property placeholder =" classpath: db.properties "! id = "dataSource"> <name = "driverClassName"> <datule> $ {jdbc.driverclassname} </value> </property> <property name = "url"> <value> $ {jdbc.url} </value> </property> <property name = "username"> <value> $ {jdbc.Usr. name = "password"> <dulch> $ {jdbc.password} </value> </property> </bean> <!-Включите конфигурацию аннотации, а именно Autowried-> <!-<Контекст: аннотация-конфиг/>-> <!-Фактически, компонент-сканирование имеет функцию аннотации-конфига, то есть, то есть регистр. Base-package = "com.website.service" /> <!-При использовании mybatis, Spring использует sqlSessionFactorybean для управления mybatis 'sqlSessionFactory-> <bean id = "sqlSessionFactory"> <ploys name = "dataSource" ref = "dataSource" /> <! <!-Путь файла карты класса объектов, только один из них записывается до конца, и несколько из них могут быть заменены mybatis/*. Xml-> <name = "mapperlocations" value = "classpath: mybatis/usermapper.xml"/> </bean> <bean id = "sqlsession"> <constructor-arg index = bean = "sqlSessionFactory"/> </constructor-arg> </bean> <!-Динамическая прокси-реализация не требует написания DAO-> <Bean Id = "MapperScannerConfigurer"> <!-базовый базовый диапазон здесь не требуется, и это не нужно реализовать сама-сайт. value = "com.website.dao" /> <!-Если есть только один источник данных, вы не можете указать его, но если есть несколько источников данных, вы должны указать его-> <!-<name = "sqlSessionFactoryBeanname" Value = "sqlSessionFactOr name="sqlSessionTemplateBeanName" value="sqlSession" /> </bean> <!--Transaction Manager--> <bean id="transactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- Using full annotation transaction--> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>4) Несколько источников данных
Обратите внимание, что если это многоданный источник, вы должны использовать SQLSessionFactoryBeanName или SQLSessionTemplateBeanName, чтобы указать конкретный источник данных. Я не знаю, заметили ли вы это в вышеуказанной конфигурации. Если вы используете SQLSessionTemplateBeanName, вы должны
<bean id = "sqlSession"> <constructor-arg index = "0"> <ref bean = "sqlSessionFactory"/> </constructor-arg> </bean>
Чтобы создать конкретный экземпляр и присвоить его свойству SQLSessionTemplateBeanName.
(4), Mybatis SQL -файл файла usermapper.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"> <! Для этой демонстрации пространство имен является полным путем userdao.java-> <mapper namespace = "com.website.dao.userdao"> <!-Идентификатор здесь-это имя метода в интерфейсе-> <INSERT ID = "SaveUser" Parametertype = "java.ut.map" values (#{id},#{name}) </insert> </mapper>ОК, давайте перейдем в файл конфигурации и сделаем его. Давайте посмотрим на уровень управления, слой бизнес -логики и код слоя DAO.
3. РАЗДЕЛ контроллера
пакет com.website.controller; импортировать java.util.hashmap; импортировать java.util.map; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт org.springframework.beans.factory.annotation.autowired; Import org.springframework.sterotype.controller; Импорт org.springframework.web.bind.annotation.requestmapping; Импорт org.springframework.web.bind.annotation.requestmethod; импорт com.website.service.userservice; @Controller @RequestMapping (value = "/user") открытый класс userController {// Inject userService Object @Autowired Private Userservice Userservice; @Requestmapping (value = "/save.do", method = requestMethod.get) public String saveUser (httpservlectrequest, httpservletresponse response) {String id = request.getParameter ("id"); String name = request.getParameter ("name"); Map <string, string> map = new hashmap <string, string> (); map.put ("id", id); map.put ("имя", имя); userservice.saveuser (map); вернуть "индекс"; }}4. Сервисный слой
пакет com.website.service; импортировать java.util.map; Импорт org.springframework.beans.factory.annotation.autowired; Импорт org.springframework.stereotype.service; Импорт org.springframework.transaction.annotation.transactional; Импорт com.website.dao.userdao; @Service ("userservice") @transactional public class userservice {// inception interface incestion incestion class // оба метода впрыска могут быть @autowired private user userdao userdao; public void SaidEuser (map <string> map) {int end = userDao.saveUser (map); System.out.println ("end:" + end); }}5. Интерфейс слоя DAO
пакет com.website.dao; импортировать java.util.map; //com.website.dao.userdao public interface userdao {int saveUser (map <string, string> map); } Полный путь интерфейса DAO - это пространство имен файла отображения, соответствующее этому интерфейсу DAO, и имя метода является значением идентификатора
ОК, этот метод конфигурации закончился, и есть также полная небольшая демонстрация. Давайте кратко подведем это ниже:
По сравнению с предыдущим методом конфигурации (который будет записан ниже), он использует метод динамического прокси интерфейса слоя DAO. Раньше мы вручную вручную реализовать слой DAO в слое DAO, а затем автоматически вводить экземпляр SQLSessionTemplate для вызова конкретных методов, таких как INSERT («», «») SELECTONE («", "") и другие методы. Первым параметром является адрес файла отображения: пространство имен и имен имен, а второй параметр - это пропущенные условия. Таким образом, Mybatis найдет специфический файл отображения в соответствии с двумя параметрами, которые мы передали для анализа и запроса. Использование Dynamic Proxy здесь устраняет этап реализации интерфейса DAO, но мы реализовали его к весне. Есть проблема. Мы прошли параметры условия запроса, но конкретный путь файла отображения: namespce+id. Что мне делать, если это не пройдет? То есть пространство имен вашего файла отображения должно быть полным именем класса интерфейса, и идентификатор должен быть именем метода в интерфейсе, чтобы динамический прокси -сервер мог найти путь, а также имеет параметры. Как вы думаете, это то же самое? Хахаха!
2. Вручную реализуйте интерфейс слоя DAO
Давайте сначала посмотрим на конфигурацию и код для вручную реализовать уровень DAO:
1. Структурная диаграмма темы
2. Три файла конфигурации и картирование файлов
(1) Запись программы, конфигурация контроллера переднего контроллера web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" = "webapp" = "webapp" = "webapp_dapp_3_0.0. <SIVEL-name> webse2 </display-name> <!-Загрузить конфигурацию контейнера пружины-> <Learser> <Learser-class> org.springframework.web.context.contextloaderListener </allower> </allower> <!-Установите конфигурацию конфигурации пружины. ClassPath: config/springmvc-servlet.xml, classpath: config/applicationcontext.xml </param-value> </context-param> <!-Фильтр кодирования символов-> <Filter> <Filter-Name> encodingFilter </filter-mame> <filter-class> org.spramework.web.w.filter. <Intic-param> <param-name> кодирование </param-name> <param-value> utf-8 </param-value> </init-param> <init-param> <init-param> <param-name> forceencoding </param-name> <param-value> true </param-value> </init-param> </fipment> <filter> <filter-name> encodingfilter </filter-name> <url-pattern>*. Do </url-pattern> </filter-mapping> <!-Front-End Controller-> <servlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.spramework. <param-name>contextConfigLocation</param-name> <param-value>classpath:config/springmvc-servlet.xml</param-value> </init-param> <!-- This configuration file is loaded when the container starts --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- Запрос на перехват-> <url-pattern>*. Do </url-pattern> </servlet-mapping> <selcopply-file> <selcoven-file> index.html </wervelode-file> <selcopply-file> index.htm </wervedied-file> <welcomew-file> index.jsp </wervedomive> <shodvence-fault> default> defble> wallow> jestemble-file> werveding> werved> helpossive> wallow-file> <welcelyfile> default.htm </wervedied-file> <selcoveryfile> default.jsp </werveding-file> </werveding-file-list> </web-app>
(2) Уровень управления сканированием, автоматическая инъекция и конфигурация просмотра Springmvc-servlet.xml
<? 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: aop = "http://www.springframework.org/schema/aop" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframe.orns: mvc =" http://www.springframe.ormema. xmlns: util = "http://www.springframework.org/schema/util" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: jdbc = "http://www.sprame». xmlns: cache = "http://www.springframework.org/schema/cache" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.orgemam. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/Util http://www.sprmeframe.org/schema/til/spring-ut3.1.xsd3.1.xsd3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd http://www.springframework.org/schema/cache http://www.sprmemawork.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "> <!-Драйвер аннотации-> <MVC: Annotation-infect/> <!-<Контекст: аннотация-config/>-> <! base-package = "com.website.controller"> </context: component-scan> <!-view parser-> <bean id = "viewresolver"> <name = "prefix" value = "/web-inf/"> </property> <property name = "Суффикс" value = ".
(3) Источник данных, автоматическое сканирование и инъекцию службы, пружина управляла mybatissqlSessionFactory и конфигурация транзакций ApplicationContext.xml
<? 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: tx = "http://www.springframework.org/schema/tx" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.springframework.orbema. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Нагрузка конфигурации jdbc file-> <context: property placeholder =" classpath: db.properties "! id = "dataSource"> <name = "driverClassName"> <datule> $ {jdbc.driverclassname} </value> </property> <property name = "url"> <value> $ {jdbc.url} </value> </property> <property name = "username"> <value> $ {jdbc.Usr. name = "password"> <dulch> $ {jdbc.password} </value> </property> </bean> <!-Включите конфигурацию аннотации, а именно Autowried-> <!-Component Scan имеет функцию аннотации-конфигурации, то есть внедрение в Container-> <! Сканируйте фасоль перед тем, как его можно будет использовать-> <Контекст: Component-Scan Base-package = "com.website.service, com.website.dao" /> <!-При использовании mybatis Spring использует sqlSessionFactorybean для управления SQLSesionFactory-при использовании интерфейсов, метод использования SqlSessionTatorytatorytatorytatory. Он предоставляет некоторые методы-> <bean id = "sqlSessionFactory"> <name = "dataSource" ref = "dataSource" /> <!-путь файла файла конфигурации mybatis-> <name = "configlocation" value = " /> <!-Pail Pail Class Class, в этом должен быть несколько файлов карты в разработке, поэтому MyBatis /*. Xml. value = "classpath: mybatis/usermapping.xml"/> </bean> <!-Фактически, примером этого класса является sqlSession в mybatis-> <bean id = "sqlsession"> <Конструктор-arg index = "0"> <ref bean = "sqlsessionFactory"/> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> id = "TransactionManager"> <name = "dataSource" ref = "dataSource" /> < /bean> <!-Используйте транзакцию полной аннотации-> <TX: управляемая аннотация транзакция-Manager = "TransactionManager" /> < /Beans>(4) Файл отображения 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"> <! После того, как мы напишем полный путь в слое DAO Mybatis-это отображение соответствующих операторов SQL в этом файле-> <mapper namespace = "com.website.usermapper"> <!-parametertype-это тип параметра, который вы принимаете,-> <!-Добавить информацию-> <insert id = "insertuser" parametertype = "java.ut. user (id, name, password) values (#{id},#{name},#{пароль}) </insert> </mapper>Вы можете увидеть, что идентификатор идентификатора имен идентификатора сопоставления здесь настроен вместо полного имени класса +идентификатор интерфейса слоя DAO.
3. Контроллер
пакет com.website.controller; импортировать java.util.hashmap; импортировать java.util.map; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт org.springframework.beans.factory.annotation.autowired; Import org.springframework.sterotype.controller; Импорт org.springframework.web.bind.annotation.requestmapping; импорт com.website.service.userservice; /*** @Author WHD DATA 5 июня 2016 г.*/@Controller @Requestmapping (value = "/user") открытый класс usercontroller {@autowired private userservice userservice; @Requestmapping (value = "/save.do") public String saveUser (httpservletrequest, httpservletresponse response) {string id = request.getParameter ("id"); String name = request.getParameter ("name"); String password = request.getParameter ("пароль"); Map <string, string> map = new hashmap <string, string> (); map.put ("id", id); map.put ("имя", имя); map.put ("пароль", пароль); userservice.saveuser (map); вернуть "индекс"; }}4. Служба слоя бизнес -логики
пакет com.website.service; импортировать java.util.map; Импорт org.springframework.beans.factory.annotation.autowired; Импорт org.springframework.stereotype.service; Импорт org.springframework.transaction.annotation.transactional; Импорт com.website.dao.userdao; / *** @Author WHD DATA 5 июня 2016 г.*/ @Service ("userService") @Transactional Public Class Userservice {@Autowired Private UserDao userDao; public void Saideuser (map <string, string> map) {userDao.saveuser (map); }}5. Дао слой
пакет com.website.dao; импортировать java.util.map; Импорт org.mybatis.spring.sqlsessionTemplate; Импорт org.springframework.beans.factory.annotation.autowired; Import org.springframework.sterotype.repository; / *** @Author WHD DATA 5 июня 2016 г.*/ @Repository ("userDao") открытый класс userDao {@autowired private sqlSessionTemplate sqlSession; public void saveUser (map <string, string> map) {int end = sqlsession.insert ("com.website.usermapper.insertuser", map); System.out.println ("end" + end); }}Мы смотрим на SQLSessionTemplate инвертированного слоя DAO. Это на самом деле объект SQLSession в Mybatis. Мы видим, что он настроен в ApplicationContext.xml, поэтому, когда мы его используем, Spring автоматически вводит его. Мы можем использовать его напрямую, не создавая его сами. Это так называемая контрольная инверсия. ОК, методы конфигурации этих двух файлов закончились.
Суммировать
Выше приведено подробное объяснение методов конфигурации пружины и Mybatis, представленных вам (два часто используемые методы). Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!