Integración con Spring3
Como marco básico, Spring puede integrar marcos de fondo como Hibernate, MyBatis, etc.
El artículo anterior presenta el uso de mybatis solo, y la lógica general es:
SQLSessionFactory <- Archivo de configuración (incluida la configuración de la conexión de la base de datos)
Ixxxmapper <- sqlsession <- sqlsessionFactory
<- interfaz mapper <- mapper xml
Después de obtener ixxMapper, puede llamar a su método para la interacción de datos.
Al integrarse con Spring, los objetos anteriores deben administrarse como frijoles:
Configuración de la conexión de la base de datos Bean <- Conexión de la base de datos
sqlsessionfactory bean <- dataSource
<- Archivo de configuración
Usermapper Bean <- SQLSessionFactory
<- interfaz mapper
1. Agregue dependencias en pom.xml:
<Proteies> <mybatis.spring.version> 1.2.1 </mybatis.spring.version> <dbcp.version> 1.4 </dbcp.version> <spring.version> 3.1.2.release </spring.version> </propiedades> <pendencias> <dependency> <! <MoupRid> org.mybatis </groupid> <artifactid> mybatis-spring </artifactid> <versions> $ {mybatis.spring.version} </versión> </pendency> <pepressency> < <artifactid> spring-jdbc </artifactid> <versever> $ {spring.version} </versión> </pendency> <pendency> <!-DataSource es una instancia de BasicDataSource-> <ProupId> Commons-DBCP </GroupId> <artifactID> Commons-DBCP </artifactid> <verserse </pendency> <pendency> <uproupid> org.springframework </proupid> <artifactID> spring-test </artifactid> <versión> $ {spring.version} </versión> </pendency> </pendencies> 2. Cree el archivo frijoles-da.xml en el classpath:
<? 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" "" "" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beanss.xsd"> <bean id = "dataSource"> <! value = "com.mysql.jdbc.driver" /> <propiedad name = "url" value = "jdbc: mysql: // localhost: 3306 /hbatis? caracterSencoding = utf8" /> <propiedad name = "username" value = "root" /> <nombre de propiedad = "contraseña" valor = "123456" /> << /<beay> id = "sqlSessionFactory"> <!-SqlSessionFactory Bean-> <Property Name = "DataSource" ref = "dataSource" /> <!-Fuente de datos-> <propiedad de propiedad = "configlocation" valor = "classpath: configuración.xml" /> <!-Archivo de configuración-> < /bean> <bean id = "usermapper"> <!-user map-<serment-<serve-<serper name = "SqlSessionFactory" ref = "SqlSessionFactory" /> <Property Name = "Mapperinterface" value = "com.john.hbatis.mapper.iusermapper" /> <!-Interfaz de asignación-> </les>
3. Clase de prueba:
@ContextConfiguration (ubicaciones = {"classpath: beans-da.xml"}) clase pública SpringInteGrationTest extiende AbstractTngSpringContextTests {private static final logger = loggerFactory.getLogger (SpringIngationTest.Classs); @Resource Iusermapper Mapper; @Test public void QUERYTEST () {usuario user = mappper.getuserByid (1); log.info ("name: {}, dirección: {}", user.getName (), user.getAddress ()); }} Integración con SpringMVC
Aquí construimos sobre la integración con Spring3:
1. Agregue las dependencias de SpringMVC y Freemarker a Pom.xml:
<properties> <freemarker.version>2.3.19</freemarker.version> <servlet.version>2.5</servlet.version> </properties> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>${freemarker.version}</version> </dependency> <dependency> <MoupRid> javax.servlet </groupid> <artifactid> servlet-api </artifactid> <versión> $ {servlet.version} </versión> <cope> proporcionó </cope> </pendency>2. Agregue el oyente de Spring y el servlet de SpringMVC en Web.xml:
<Oyerer> <Oyerer-class> org.springframework.web.context.contextLoaderListener </ oyinger-class> <!-Escuche eventos de contenedores, inicialice y cierre el contexto de la aplicación web y llame a contextleanupplistener para limpiar los recursos-> </oyente> <searcher> <Oyerer-class> org.springframework.web.context.contextcleanupplistener </oyoryer-class> <!-Limpie los recursos destructibles relacionados con la primavera en ServletContext cuando la aplicación web está cerrada-> </yearer> <servlet> <servlet-name> hbatis </servlet name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <!-<initparam> <amamname> contextconfiglocation </param-name> <amam-value> /web-inf/hbatis-servlet.xml </param-value> </init-param>-> <! $ {Project.name} -servlet.xml en el directorio de Web-INF-> <Cargar-N-STARTUP> 1 </load-on-startup> </servlet> <servlet-mapping> <ervlet-name> hbatis </lerlet-name> <url-pattern>*. htm </ url-pattern> </servlet-mapping>3. Cree uno nuevo en Web-INF:
Archivo de configuración de Spring ApplicationContext.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: p = "http://www.springframework.org/schema/p" "" "" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://wwww.springframwork.org /schema/sbanschem http://www.springframework.org/schema/Beans/spring-Beanss.xsd http://www.springframework.org/schema/context http://www.springFramework.org/schema/context/spring-conte-contexsd "> ubicación = "classpath: /database.properties" /> <!-Archivo de configuración de la base de datos-> <bean id = "dataSource" p: controladorclassname = "$ {controlador de controlador id = "SQLSessionFactory"> <!-SQLSessionFactory Object-> <Property Name = "DataSource" ref = "dataSource" /> <!-Fuente de datos-> <Property name = "configLocation" valor = "classpath: configuration.xml" /> <!-mybatis archivo-> <!-<name de propiedad = "mApperLocationss mapperLocations value = "classpath*: com/John/Hbatis/Model/*. Xml"/>-> <!-Puede configurar el archivo de asignación en Configuration.xml o aquí, pero no puede tener parametermap, resultadomap, sql, etc. con el mismo id-> </bean> <bean id = "mapperconfigurer"> <!-escanear el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico para obtener el paquete específico. value = "com.john.hbatis.mapper"/> </bean> </beans>database.properties bajo el classpath:
DriverClassName = com.mysql.jdbc.driver url = jdbc: mysql: // localhost: 3306/mybatis? caracterSencoding = utf8 user_name = root contraseña = 123456
Nota: Debido a que MappersCannerConfigurer puede hacer que el nombre de usuario obtenga la cuenta del usuario, haciendo que la conexión de la base de datos falle, por lo que se cambia a otro valor: User_Name.
Archivo de configuración de SpringMVC hbatis-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: contexte = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springfframework.org/context/spring-contexsdd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <mvc: annotation-drener/ RequestMappingHandLermapping, requestMappingHandlerAdapter y ExceptionHandLerExceptionResolver para proporcionar soporte para anotaciones como @RequestMapping, @ExceptionHandler, etc.-> <context: componente-scan base-package = "com.john.hbatis.controller" /> <!-Escanee la clase con la clase específica bajo el paquete de controladores, instancial e instancial y dependencia de la lesión- processor--> <bean id="viewResolverFtl"> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/> <property name="contentType" value="text/html;charset=utf-8"/> <property name="prefix" value="" /> <property name="cache" value = "false"/> <propiedad name = "ViewNames"> <RArray> <valor>*. ftl </value> </Array> </propiety> <!-<Property name = "Suffix" Value = ". ftl"/>-> <Property Name = "Orden" Value = "0"/> <!-Prioridad, el valor más pequeño, el valor superior, más alto-> </bean> <beay Id = "free" value = "0"/> <!-prioridad, el valor más pequeño del valor, más alto la prioridad-> </bean> <beaperi. name = "TEMPLATELOADERPATHS"> <List> <value>/web-Inf/ftl/</value> <!-ruta de carga de plantilla-> </list> </propianas> </bean> </beans>
4. MVC:
Capa de control: UserController.java
@Controller @RequestMapping ("/Artículo") Clase pública UserController {@aUtoWired IUSermapper Mapper; @RequestMapping ("/List") Public String showAll (modelmap modelMap) {list <Attic> artículos = mappper.getArticlesByUserId (1); modelMap.Addattribute ("Artículos", artículos); regresar "main.ftl"; }}Vista de la capa: main.ftl:
<#List Artículos como artículo> <Div> $ {Artículo.id}. $ {Artículo.title}: $ {artículo5. Inicie el proyecto e ingrese el navegador: http: // localhost: 8080/hbatis/artículo/list.htm para ver los resultados.