Resumí tres métodos en el artículo anterior, pero hay dos métodos que anotan SQL. Este método es bastante confuso, por lo que todos no lo usan mucho. Resumamos los dos métodos de uso común:
1. Clase de implementación proxy dinámica sin escribir DAO
Este método es relativamente simple. No necesita implementar la capa DAO, solo necesita definir la interfaz. Aquí es solo para grabar el archivo de configuración, por lo que el programa es muy simple:
1. Diagrama de estructura general:
2. Tres archivos de configuración y un archivo de asignación
(1) La entrada del programa y la configuración del controlador front-end Web.xml
<? xml versión = "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" <Scant-Name> Sitio web1 </spant-Name> <!-Configurar escuchar y ensamblar automáticamente la información de configuración de ApplicationContext cuando el contenedor web se inicia-> <Oyerer> <Oyerer-Class> org.springframework.web.context.contextloaderListener </oyer-class-class> </oyeyer> <!-Estable <amamname> contextConfigLocation </amamname> <amam-value> classpath: config/springmvc-servlet.xml, classpath: config/applicationContext.xml </param-value> </context-param> <!-Filtro de encarcelamiento de caracteres-> <filter> <filter-name> encoderingfilter </filtro-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> <Amam-Value> True </amam-value> </it-param> </siltre> <filter-mapping> <filter-name> EncodingFilter </filter-name> <url-pattern>*. do </ url-pattern> </filter-mapping> <!-front-end controlador-> <ervlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <itel-param> <amamname> contextconfiglocation </amamname> <amam-value> classpath: config/springmvc-servlet.xml </marcal-value> </ init-param> <!-este archivo de configuración está cargado es lo que se está cargando el archivo de configuración. <OMAR-ONSTARTUP> 1 </load-on-startup> </servlet> <servlet-mapping> <ervlet-mapping> <ervlet-name> springmvc </servlet-name> <!-intercept soly-> <url-pattern>*. do </url-pattern> </servlet-mapping> <creie bien bienvenido-list> <belliente-file> índice. <velidente-file> index.htm </Welcome-File> <Welcome-File> index.jsp </leadde-file> <calle-file> default.html </leadde-file> <welcome-file> default.htm </welcome-file> <welcome-file> default.jsp </welcome> </beatle-file-list> </beb-app>
(2) Escanear la capa de control, inyección automática y ver la configuración del analizador springmvc-servlet.xml
<? xml versión = "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://wwww.springframe.org/sChemC" xmlns: util = "http://www.springframework.org/schema/util" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: jdbc = "http://wwww.springframe xmlns: cache = "http://www.springframework.org/schema/cache" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-3. 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.springframework.org/schema/util/spring-util-3.1.1.xsd 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.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "> <!-Annotation Driver-> <mvc: annotation-driven/> <!-<context: annotation-config/>-> < <context: component-scan base-pankage = "com.website.controller"> </context: component-scan> <!-Ver anal
(3) Fuente de datos, escaneo e inyección automática de servicios, myBAtIsqlSessionFactory administrado por Spring, proxy dinámico de interfaz de capas DAO y configuración de transacción applicationContext.xml
Habrá múltiples archivos de configuración aquí
1) Fuente de datos único, el proxy dinámico no establece los valores de las dos propiedades de SQLSessionFactoryBeanName o SQLSessionTemplateBeanName al implementar la interfaz de la capa DAO.
<? xml versión = "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.org/schema/Beans/spring-Beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframwork.org/schema/context/spring-context-3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.2.xsd "> <!-Cargue la configuración JDBC File-> <context: PropertyPoLoCeation Ubicación =" classpath: db.properties "/> <! id="dataSource"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name = "Password"> <value> $ {jdbc.password} </value> </property> </bean> <!-Active la configuración de anotación, a saber, AutoWried-> <!-<context: annotation-config/>-> <!-De hecho, componente-scan tiene la función de anotación-config, es Base-Package = "com.website.service" /> <!-Cuando se usa mybatis, Spring usa sqlsessionFactoryBean para administrar myBatis 'sqlsessionFactory-> <bean id = "sqlsessionFactory"> <Property name = "dataSource" ref = "dataSource" /> <!-mybatis archivo de archivo-> <nombre de propiedad name de propiedad " < Bean = "SQLSessionFactory"/> </ constructor-arg> </reme>-> <!-La implementación de proxy dinámico no necesita escribir dao-> <bean id = "mapperscannerconfigurer"> <!-aquí base basePackage el poder de la capa de dao value = "com.website.dao" /> <!-Si solo hay una fuente de datos, no puede especificarla, pero si hay múltiples fuentes de datos, debe especificarlo-> <!-<Property name = "sqlsessionFactoryBeanName" value = "sqlSessionFactory" />-<!-especificar directamente el nombre sqlSessionTeMPLate, que en realidad es el mismo, lo que realmente es el mismo, lo mismo, que es el mismo, lo mismo, lo mismo. name = "SqlSessionTemplateBeanName" value = "Sqlsession" />-> </ bean> <!-Transaction Manager-> <bean id = "TransactionManager"> <Property name = "dataSource" ref = "dataSource" /> < /bean> <!-Uso de transacción completa de anotación-> <tx: annotation-anotation transactive-manager " /" planationManaer " /"2) Configure el valor de la propiedad de SQLSessionFactoryBeanName para una sola fuente de datos
<? xml versión = "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.org/schema/Beans/spring-Beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframwork.org/schema/context/spring-context-3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.2.xsd "> <!-Cargue la configuración JDBC File-> <context: PropertyPoLoCeation Ubicación =" classpath: db.properties "/> <! id="dataSource"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name = "Password"> <value> $ {jdbc.password} </value> </property> </bean> <!-Active la configuración de anotación, a saber, AutoWried-> <!-<context: annotation-config/>-> <!-De hecho, componente-scan tiene la función de anotación-config, es Base-Package = "com.website.service" /> <!-Cuando se usa mybatis, Spring usa sqlsessionFactoryBean para administrar myBatis 'sqlsessionFactory-> <bean id = "sqlsessionFactory"> <Property name = "dataSource" ref = "dataSource" /> <!-mybatis archivo de archivo-> <nombre de propiedad name de propiedad " < Bean = "SQLSessionFactory"/> </ constructor-arg> </reme>-> <!-La implementación de proxy dinámico no necesita escribir dao-> <bean id = "mapperscannerconfigurer"> <!-aquí base basePackage el poder de la capa de dao value = "com.website.dao" /> <!-Si solo hay una fuente de datos, no puede especificarlo, pero si hay múltiples fuentes de datos, debe especificarlo-> <name de propiedad = "sqlsessionFactoryName" value = "sqlsessionFactory" /> <!-formulado directamente el nombre de sqlsessionTempa name = "SqlSessionTemplateBeanName" value = "Sqlsession" />-> </ bean> <!-Transaction Manager-> <bean id = "TransactionManager"> <Property name = "dataSource" ref = "dataSource" /> < /bean> <!-Uso de transacción completa de anotación-> <tx: annotation-anotation transactive-manager " /" planationManaer " /"3) Configure el valor de la propiedad SQLSessionTemplateBeanName para una sola fuente de datos
<? xml versión = "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.org/schema/Beans/spring-Beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframwork.org/schema/context/spring-context-3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.2.xsd "> <!-Cargue la configuración JDBC File-> <context: PropertyPoLoCeation Ubicación =" classpath: db.properties "/> <! id="dataSource"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name = "Password"> <value> $ {jdbc.password} </value> </property> </bean> <!-Active la configuración de anotación, a saber, AutoWried-> <!-<context: annotation-config/>-> <!-De hecho, componente-scan tiene la función de anotación-config, es Base-Package = "com.website.service" /> <!-Cuando se usa mybatis, Spring usa sqlsessionFactoryBean para administrar myBatis 'sqlsessionFactory-> <bean id = "sqlsessionFactory"> <Property name = "dataSource" ref = "dataSource" /> <!-mybatis archivo de archivo-> <nombre de propiedad name de propiedad " < </constructor-arg> </bean> <!-La implementación de proxy dinámico no requiere escribir dao-> <bean id = "mapperscannerconfigurer"> <!-basepackage aquí el dao interfaz de interfaz se especifica, y la interfaz de dao aquí no necesita ser implementada por sí misma-> <nombre de propiedad = "basepackage" value = "com.wesite.Da.dao/! Una fuente de datos, no puede especificarlo, pero si hay múltiples fuentes de datos, debe especificarlo-> <!-<Property name = "sqlSessionFactoryName" value = "sqlsessionFactory" />-> <!-Formula directamente el nombre sqlsessionTeMate, que en realidad es el mismo que el anterior-> <nombre de propiedad = "sqlsessionsession sqlsession sqlpLateBeanseSeSeSeSeSeSeSeSeSeSeSeSeSeMeSeSeSeSeSeSeSeSeSeSeSeSeMeSeSeSeSeSeMeSeSeMeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSe. /> < /bean> <!-Transaction Manager-> <bean id = "TransactionManager"> <Property name = "dataSource" ref = "dataSource" /> </reme> <!-Usando la transacción de anotación completa-> <tx: transacción-manager-maneger de anotación = "TransactionManager" /> </-behors>4) múltiples fuentes de datos
Tenga en cuenta que si se trata de una fuente de datos múltiples, debe usar SQLSessionFactoryBeanName o SQLSessionTemplateBeanName para especificar la fuente de datos específica. No sé si lo notó en la configuración anterior. Si usa sqlsessionTemplateBeanName, debe
<bean id = "sqlsession"> <constructor-arg index = "0"> <ref bean = "sqlsessionFactory"/> </ constructor-arg> </ bean>
Para crear una instancia específica y asignarla a la propiedad SQLSessionTemplateBeanName.
(4), el archivo de asignación de mybatis sql usermapper.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <! Para esta demostración, el espacio de nombres es la ruta completa de userdao.java-> <mappper namespace = "com.website.dao.userdao"> <!-La identificación aquí es el nombre del método en la interfaz-> <insertar id = "salvar" parámetería = "java.util.map"> Insert en user (id, nombre) valores (#{#{it Id},#}) </sert> </mapper>Ok, vayamos al archivo de configuración y lo hagamos. Echemos un vistazo a la capa de control, la capa lógica de negocios y el código de capa DAO.
3. Capa del controlador
paquete com.website.controller; import java.util.hashmap; import java.util.map; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestMapping; importar org.springframework.web.bind.annotation.requestmethod; import com.website.service.userservice; @Controller @RequestMapping (value = "/user") clase pública UserController {// Inyect UserService Object @autewired private UserService UserService; @RequestMapping (valor = "/save.do", método = requestmethod.get) public string saveUser (httpservletRequest solicitud, respuesta httpServletResponse) {String id = request.getParameter ("id"); Name de cadena = request.getParameter ("nombre"); Map <string, string> map = new HashMap <String, String> (); map.put ("id", id); map.put ("nombre", nombre); UserService.SaveUser (MAP); devolver "índice"; }}4. Capa de servicio
paquete com.website.service; import java.util.map; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.stereotype.service; importar org.springframework.transaction.annotation.transactional; import com.website.dao.userdao; @Service ("UserService") @Transactional Public Class UserService {// Inyection DAO Interface Implementation Class Instance // Ambos métodos de inyección pueden ser @AUTOWIREDIREDIREDURADO USERDAO USERDAO; public void saveUser (map <string, string> map) {int end = userdao.saveUser (map); System.out.println ("End:" + End); }}5. Interfaz de capa DAO
paquete com.website.dao; import java.util.map; //com.website.dao.userdao interfaz pública userDao {int saveVeuser (map <string, string> map); } La ruta completa de la interfaz DAO es el espacio de nombres del archivo de asignación correspondiente a esta interfaz DAO, y el nombre del método es el valor de la ID
Ok, este método de configuración ha terminado, y también hay una pequeña demostración completa. Resumimos brevemente a continuación:
En comparación con el método de configuración anterior (que se escribirá a continuación) es que utiliza el método de proxy dinámico de la interfaz de la capa DAO. Antes, implementaremos manualmente la capa DAO en la capa DAO y luego inyectaremos automáticamente la instancia de SQLSessionTemplate para llamar a métodos específicos como insertar ("", "") SelectOne ("", "") y otros métodos. El primer parámetro es la dirección del archivo de asignación: espacio de nombres+ID, y el segundo parámetro son las condiciones aprobadas. De esta manera, MyBatis encontrará el archivo de mapeo específico de acuerdo con los dos parámetros que pasamos para analizar y consultar. El uso de proxy dinámico aquí elimina el paso de implementar la interfaz DAO, pero la implementamos para Spring. Hay un problema. Pasamos los parámetros de la condición de consulta, pero la ruta específica del archivo de asignación es: Namespce+ID. ¿Qué debo hacer si no se pasa? Es decir, el espacio de nombres de su archivo de asignación debe ser el nombre completo de la clase de interfaz y la ID deben ser el nombre del método en la interfaz, para que el proxy dinámico pueda encontrar la ruta y también tiene parámetros. ¿Crees que es lo mismo? ¡Jajaja!
2. Implementar manualmente la interfaz de la capa DAO
Primero echemos un vistazo a la configuración y el código para implementar manualmente la capa DAO:
1. Diagrama de estructura del tema
2. Tres archivos de configuración y archivos de mapeo
(1) Entrada de programa, configuración del controlador front-end Web.xml
<? xml versión = "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" <Spant-Name> Sitio web2 </siplip-name> <!-Cargue la configuración del contenedor Spring-> <Oyeer> <Oyerer-class> org.springframework.web.context.contextloaderListener </oyer-class> </oyeryer> <!-Establezca la ruta del archivo de configuración de Spring Contenseer-> <sute-param> <amamamname> contextconfigfigfigfigmation </Param-value de carga contenedor contenedor classpath: config/springmvc-servlet.xml, classpath: config/applicationContext.xml </param-value> </context-param> <!-caracteres codificando filtro-> <filter> <filter-name> EncodingFilter </filtre-name> <filter-class> org.springframeward <Init-param> <amamname> codificación </param-name> <amam-value> utf-8 </am-value> </it-param> <init-param> <init-param> <amamname> forceEninging </amamname> <amam-value> true </param-value> </ithparam> </filter> <filter-mapping> <filter-name> EncodingFilter </filtre-name> <url-pattern>*. do </url-pattern> </filtre-mapping> <!-controlador front-end-> <servlet> <servlet-name> springmvc </servlet-name> <ervlet-class> org.springfringframe.web.servlet.dispatcherserverlet </servlet-class> <servlet> org.springframework.web.servlet.dispatcherserverlet </servlet-class> <ing-class> org.springframework.web.servlet.dispatcherserverlet </servlet-class> <servlet> org.springframework.web.servlet.dispatcherserverlet </servlet-class> <ing-class> <amamname> contextConfigLocation </amamname> <amam-value> classpath: config/springmvc-servlet.xml </amam-value> </it-param> <! < <velceed-file> default.htm </Welcome-File> <Welcome-File> Default.jsp </Welcome-File> </Welcome-File-List> </seb-app>
(2) Escanear la capa de control, inyección automática y ver la configuración del analizador springmvc-servlet.xml
<? xml versión = "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://wwww.springframe.org/sChemC" xmlns: util = "http://www.springframework.org/schema/util" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: jdbc = "http://wwww.springframe xmlns: cache = "http://www.springframework.org/schema/cache" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-3. 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.springframework.org/schema/util/spring-util-3.1.1.xsd 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.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "> <!-Annotation Driver-> <MVC: Annotation-Driven/> <!-<Context: Annotation-Config/>-> <!-Escanear-> <contexto: Component Scan-Scan Scan Base-Package = "com.website.controller"> </context: component-scan> <!-Ver anal
(3) Fuente de datos, escaneo e inyección automáticos de servicio, Spring gestionó MyBAtIsSQLSessionFactory y Configuración de transacciones ApplicationContext.xml
<? xml versión = "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.org/schema/Beans/spring-Beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframwork.org/schema/context/spring-context-3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.2.xsd "> <!-Cargue la configuración JDBC File-> <context: PropertyPoLoCeation Ubicación =" classpath: db.properties "/> <! id="dataSource" > <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name = "Password"> <value> $ {jdbc.password} </value> </property> </bean> <!-Activar la configuración de anotación, a saber, Autowowried-> <!-Component-scan tiene la función de annotation-config, es decir, inyectar las clases requeridas en el contenedor de primavera-> <!-<context: annotation-config/>-> < Escanee el frijol antes de que pueda usarse-> <context: component-scan base-paquete = "com.website.service, com.website.dao" /> <!-Cuando se usa mybatis, Spring usa sqlsessionFactoryBean para administrar mybatis 'sqlsessionFactory-> <!-cuando se usa interfaces, el método de usar sqlsession ttsession to lo utiliza. Proporciona algunos métodos-> <bean id = "sqlsessionFactory"> <propiedad name = "dataSource" ref = "dataSource" /> <!-ruta de archivo de configuración myBatis-> <name de propiedad = "configlocation" valor = "" /> <!-ruta de archivo de mapa de clase de entidad, debe haber múltiples archivos de mapa en el desarrollo, así que mybatis /*. Xml se usa en su lugar-> <name de propiedades de propiedad = "mapasto" " value = "classpath: mybatis/usermapping.xml"/> </ bean> <!-de hecho, el ejemplo de esta clase es sqlSession en myBatis-> <bean id = "sqlsession"> <constructor-arg index = "0"> <ref bean = "sqlSessionFactory"/> </ constructor-arg> <///behremmana) name = "DataSource" ref = "dataSource" /> </reme> <!-Use la transacción de anotación completa-> <tx: transacción-manager-manager de anotación = "TransactionManager" /> </ Beans>(4) archivo de mapeo mybatis
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-esto de los nombres + el Ids a continuación es un camino completo. Después de escribir la ruta completa en la capa DAO, myBatis es la asignación de las declaraciones SQL relevantes en este archivo-> <mapper namespace = "com.website.usermapper"> <!-Parametertype es el tipo de parámetro que acepta,-> <!-Agregar información de usuario-> <insertar id = "inserSUser" Parametertype = "java.utilio. valores (#{id},#{name},#{contraseña}) </sert> </mapper>Puede ver que el espacio de nombres +ID del archivo de asignación aquí está personalizado en lugar del nombre de clase completa +ID de la interfaz de la capa DAO.
3. Controlador
paquete com.website.controller; import java.util.hashmap; import java.util.map; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestMapping; import com.website.service.userservice; /*** @Author WHD Data 5 de junio de 2016*/@Controller @RequestMapping (valor = "/user") Class pública Usercontroller {@AUTOWIREDIREDREDED USER UserService UserService; @RequestMapping (value = "/save.do") public String saveUser (httpservletRequest solicitud, respuesta httpServletResponse) {string id = request.getParameter ("id"); Name de cadena = request.getParameter ("nombre"); Cadena contraseña = request.getParameter ("contraseña"); Map <string, string> map = new HashMap <String, String> (); map.put ("id", id); map.put ("nombre", nombre); map.put ("contraseña", contraseña); UserService.SaveUser (MAP); devolver "índice"; }}4. Servicio de capa de lógica de negocios
paquete com.website.service; import java.util.map; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.stereotype.service; importar org.springframework.transaction.annotation.transactional; import com.website.dao.userdao; / *** @Author WHD Data 5 de junio de 2016*/ @Service ("UserService") @Transactional Public Class UserService {@aUtowired userdao userDao; public void saveUser (map <string, string> map) {userDao.saveUser (map); }}5. Capa DAO
paquete com.website.dao; import java.util.map; importar org.mybatis.spring.sqlsessionTemplate; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.stereotype.repository; / *** @Author Whd Data 5 de junio de 2016*/ @Repository ("UserDao") Public Class UserDao {@autewired private sqlsessionTemplate sqlsession; public void saveUser (map <string, string> map) {int end = sqlsession.insert ("com.website.usermapper.insertuser", map); System.out.println ("End" + End); }}Miramos la plantilla SQLSession de la capa DAO invertida. Este es en realidad el objeto SQLSession en MyBatis. Vemos que está configurado en ApplicationContext.xml, por lo que cuando lo usamos, Spring lo inyectará automáticamente. Podemos usarlo directamente sin crearlo nosotros mismos. Esta es la llamada inversión de control. Ok, los métodos de configuración de estos dos archivos han terminado.
Resumir
Lo anterior es una explicación detallada de los métodos de configuración de Spring y MyBatis introducidos a usted (dos métodos de uso común). Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!