Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo usar mybatis en spring mvc

Cómo usar mybatis en spring mvc

Explicación detallada de la configuración de spring mvc myBatis

1. spring mvc

Marco Spring (el marco es: la forma de programar la configuración xml de anotaciones) MVC es un La mayor parte de las características del marco Spring, el marco Spring tiene tres características principales (IOC (inyección de dependencia), AOP (orientado a aspectos), MVC (modelado M-View V-Controller C). El marco se usa generalmente para el desarrollo en equipo, usando un enfoque en capas para permitir que todos completen. Luego se combinan diferentes módulos para completar el proyecto.

La siguiente es una lista de características que Spring mvc tiene para acelerar el desarrollo:

Spring. mvc proporciona un DispatchServlet, no es necesario. El desarrollo adicional utiliza archivos de configuración basados ​​en XML en Spring MVC que se pueden editar sin volver a compilar la aplicación. Spring MVC crea instancias de controladores y construye beans según la entrada del usuario. vincula automáticamente a los usuarios. Ingrese y convierta el tipo de datos correctamente. Por ejemplo, Spring mvc puede analizar cadenas automáticamente y establecer propiedades de tipo flotante o decimal.

Spring mvc puede verificar la entrada del usuario. Volver al formulario de entrada. La validación de entrada es opcional y admite programación y declaración. Para esto, Spring mvc tiene validadores comunes integrados. Spring mvc es parte del marco de Spring y puede aprovechar otras capacidades proporcionadas por Spring. /p>

Spring mvc admite la internacionalización y la localización. Admite visualización en varios idiomas según la región del usuario. Spring mvc admite múltiples tecnologías de visualización.

La tecnología JSP más común y otras tecnologías incluyen Velocity y FreeMarker.

Configurar spring mvc

1. Importe el paquete jar requerido por Spring

2. - mvc.xml

Copiar código

lt;?xml version="1.0" encoding="UTF-8"?gt;

lt;beans xmlns = "springframework/schema/beans"xmlns:xsi="w3/2001/XMLSchema-instance"xmlns:context="springframework/schema/context"xmlns:jdbc="springframework/schema/jdbc"xmlns:jee="springframework/ esquema /jee"xmlns:tx="springframework/schema/tx"xmlns:aop="springframework/schema/aop"xmlns:mvc="springframework/schema/mvc"xmlns:util="springframework/schema/util"xmlns: jpa ="springframework/schema/data/jpa"xsi:schemaLocation="springframework/schema/beans springframework/schema/beans/spring-beans-3.2.xswww.66298899.comrk/schema/context springframework/schema/context/spring- contexto -3.2.xswww.66298899.comrk/schema/jdbc springframework/schema/jdbc/spring-jdbc-3.2.xswww.66298899.comrk/schema/jee springframework/schema/jee/spring-jee-3.2.xswww.66298899. comrk /schema/tx springframework/schema/tx/spring-tx-3.2.xswww.66298899.comrk/schema/data/jpa springframework/schema/data/jpa/spring-jpa-1.3.xswww.66298899.comrk/schema/ aop springframework/schema/aop/spring-aop-3.2.xswww.66298899.comrk/schema/mvc springframework/schema/mvc/spring-mvc-3.2.xswww.66298899.comrk/schema/util springframework/schema/util/spring - util-3.2.xsd"gt;

lt;!-- HandlerMapping --gt;

lt;mvc: annotation-driven/gt;

Habilite el escaneo de anotaciones de Spring MVC, si no se basa en anotaciones: esta clase

Necesita heredar CommandController o muchos otros. Consulte la ayuda de Spring. Yo uso uno basado en anotaciones, que es más conveniente: Scan Controller, Service

lt; / p>

base-package="com.package name"/gt;

Habilite el escaneo de componentes, asegúrese de que todos los controladores estén en el paquete básico y no especifique un paquete básico que sea demasiado amplio lt;/beansgt;

Copiar código

Suplemento:

El primero es habilitar el escaneo de anotaciones de Spring MVC, si no se basa en anotaciones. : Esta clase necesita heredar CommandController. Para muchas otras, consulte la ayuda de Spring. Yo uso las basadas en anotaciones, lo cual es más conveniente. En segundo lugar, para habilitar el escaneo de componentes, Spring usa un mecanismo de escaneo para encontrar todas las clases de controlador basadas en anotaciones. aplicación, para garantizar que Spring encuentre su controlador, a. Spring-contextb debe configurarse en Spring mvc. Especifique el paquete base de la clase de controlador en

Para utilizar este Servlet, debe configurarlo en el descriptor de implementación (. web.xml) y aplique los elementos de servlet y mapeo de servlet de la siguiente manera:

Explicaciones relacionadas:

1. El elemento de inicio dentro del elemento de servlet es opcional. Si existe, significa que se instalará en el servlet y llamará a su método init cuando se inicie la aplicación. de lo contrario, se carga la primera solicitud del servlet.

2. Dispatcher Servlet utilizará muchos componentes predeterminados de Spring MVC. Además, al inicializar, buscará un archivo de configuración en el directorio web-INF debajo de la aplicación. Las reglas de nomenclatura del archivo de configuración son las siguientes: servletName-servlet.xml donde servletName es el nombre del servlet Dispatcher. descriptor de implementación. Como se muestra en la figura, el nombre del servlet en este ejemplo es springmvc, luego el archivo springmvc.xml configurado en el segundo paso se encontrará durante la inicialización.

3. también se puede colocar en cualquier lugar del directorio de la aplicación, el elemento

No es necesario cambiar lt; param-namegt; y lt; param-valuegt;

Para agregar: (1) Spring puede cargar archivos desde classpath, como archivos de definición de beans, especificando classpath*: y classpath: prefijo más ruta

classpath*: Parece. cargue el mismo archivo desde varios archivos jar.

classpath: solo puede cargar el primer archivo encontrado

(2) Cómo escribir un patrón de URL

1 Tres formas de escribir

① Coincidencia completa

lt; url-patterngt; /test/list.dolt /url-patterngt; p>

lt; url-patternngt; /test/*lt; /url-patterngt;

③ Coincidencia de extensiones

lt;*.dolt;/ url-patterngt;

2 Notas

El contenedor primero buscará una coincidencia exacta si no se puede encontrar, luego buscará una coincidencia de directorio si no se puede encontrar. tampoco, simplemente busque coincidencias de extensión.

Si una solicitud coincide con varias "coincidencias de directorio", el contenedor elegirá la coincidencia más larga.

¿Se informará un error si una coincidencia aparentemente normal se define como "/*.action"? Debido a que esta coincidencia pertenece tanto al mapeo de ruta como al mapeo de extensión, el contenedor no puede determinarla.

"/" se utiliza para definir la asignación de servlet predeterminada.

*.do no es un archivo. No existe un archivo .do real, es solo una asignación de servlet. Esto significa que todas las URL que terminan con .do en la URL controlan la clase establecida en el servlet; ¡Y * significa que todas las solicitudes son manejadas por la clase establecida en el servlet!

2. Configuración y uso de MyBatis

La combinación de Spring y MyBatis administra principalmente el componente de acceso a la base de datos Dao by Spring. El componente de acceso a la base de datos se implementa principalmente en base a MyBatis y se utiliza. En el entorno Spring, el proceso de implementación del componente de acceso a la base de datos en MyBatis es: primero, debe introducir un paquete de desarrollo mybatis-spring-1.2.2.jar que integre Spring y MyBatis. Definir SqlSessionFactoryBean en la configuración de Spring equivale a poner SqlSessionFactory en la gestión de contenedores de Spring. (Los desarrolladores no necesitan crear manualmente objetos SqlSessionFactory, y los desarrolladores deben inyectar información de conexión e información XML definida por SQL de una manera definida) Defina MapperFactoryBean en la configuración de Spring y se puede generar una interfaz de clase de implementación de Mapper basada en el Mapper especificado interfaz. Es necesario introducir paquetes de desarrollo: spring ioc, spring aop, dbcp, mybatis, driver, mybatis-spring.jar. Los archivos de configuración para agregar el marco Spring incluyen principalmente applicationContext.xml. Escriba la clase de entidad Usuario de acuerdo con la tabla de usuarios, escriba UserMapper.xml (defina declaraciones SQL) y escriba la interfaz UserMapper (asignada con UserMapper.xml). componente SqlSessionFactoryBean en applicationContext.xml, Mapper FactoryBean. Finalmente, pruebe la instancia UserMapperDao generada por MapperFactoryBean.

Dos características de MyBatis:

1.MyBatis utiliza SQL y mapeo de entidades, que encapsula ligeramente JDBC. 2.MyBatis escribe su propio SQL, lo que permite una mayor flexibilidad en la configuración de MyBatis.

p> p>

(1) Importar paquete jar

(2) Crear base de datos

(3) Agregar archivo de configuración MyBatis.xml

Copiar código

lt;?xml version="1.0" encoding="UTF-8"?gt;

lt;beans xmlns="springframework/schema/beans"xmlns:xsi=" w3/ 2001/XMLSchema-instance"xmlns:context="springframework/schema/context"xmlns:jdbc="springframework/schema/jdbc"xmlns:jee="springframework/schema/jee"xmlns:tx="springframework/schema/ tx" xmlns: aop="springframework/schema/aop" xmlns: mvc="springframework/schema/mvc" xmlns: util="springframework/schema/util" xmlns: jpa="springframework/schema/data/jpa" xsi: esquemaLocation= "springframework/schema/beans springframework/schema/beans/spring-beans-3.2.xswww.66298899.comrk/schema/context springframework/schema/context/spring-context-3.2.xswww.66298899.comrk/schema/jdbc springframework/schema/jdbc/spring-jdbc-3.2.xswww.66298899.comrk/schema/jee springframework/schema/jee/spring-jee-3.2.xswww.66298899.comrk/schema/tx springframework/schema/tx/spring- tx-3.2.xswww.66298899.comrk/schema/data/jpa springframework/schema/data/jpa/spring-jpa-1.3.xswww.66298899.comrk/schema/aop springframework/schema/aop/spring-aop-3.2. xswww 66298899.comrk/schema/mvc springframework/schema/mvc/spring-mvc-3.2.xswww.66298899.comrk/schema/util springframework/schema/util/spring-util-3.2.xsd"gt;

lt;bean id="dbcp"

class="org.apachemons.dbcp.Bas

icDataSource"gt;

lt; nombre de propiedad="nombre de usuario" valor="****"gt;

lt;/propertygt;

lt; nombre de propiedad="contraseña" valor="***"gt;

lt;/propertygt;

lt; nombre de propiedad="driverClassName"

valor ="com.mysql.jdbc.Driver"gt;

lt;/propertygt;

lt;nombre de propiedad="url"

valor="jdbc :mysql:///cloud_note"gt;

lt;/propertygt;

lt;!--lt;property name="url" value="jdbc:mysql:/ /localhost:3306/cloud_note?useUnicode=trueamp; caracterEncoding=utf-8"gt;lt;/propertygt; --gt;

lt;/beangt;

lt;bean id="ssf"

class="org.mybatis.spring.SqlSessionFactoryBean"gt;

lt; propiedad nombre="dataSource" ref="dbcp"gt;

lt;/propertygt;

lt;property name="mapperLocations"

value="classpath: com/niuniu/sql/*.xml"gt; p>

lt;/propertygt;

lt;/beangt;

lt;bean id="mapperscanner"

class="org .mybatis .spring.mapper.MapperScannerConfigurer"gt;

lt; nombre de propiedad="sqlSessionFactory" ref="ssf"gt;

lt;/propertygt;

lt;nombre de propiedad="basePackage"

valor="com.niuniu.dao"gt;

lt;/propertygt;

lt;/ beangt;

lt;/beansgt;

Copiar código

(4) Defina la clase de entidad correspondiente a la tabla, como se muestra en la siguiente figura

El código es el siguiente:

Copiar código

paquete com.niuniu.entity;

importar java.io.Serializable;

clase pública Usuario implementa Serializable {cadena privada cn_user_id; cadena privada cn_user_name

cadena privada cn_user_password

private Stri;

ng cn_user_token;

cadena privada cn_user_nick;

cadena pública getCn_user_id() {

return cn_user_id;

}

public void setCn_user_id(String cnUserId) {cn_user_id = cnUserId;}

public String getCn_user_name() {

return cn_user_name;

}

public void setCn_user_name(String cnUserName) {cn_user_name = cnUserName;}

public String getCn_user_password() {

return cn_user_password;

}

public void setCn_user_password(String cnUserPassword) {cn_user_password = cnUserPassword;}

public String getCn_user_token() {

return cn_user_token;

} p>

public void setCn_user_token(String cnUserToken) {cn_user_token = cnUserToken;}

public String getCn_user_nick() {

return cn_user_nick;

}

public void setCn_user_nick(String cnUserNick) {cn_user_nick = cnUserNick;}

}

Copiar código

(5) Definir el operación tabla de usuarios archivo de mapeo SQL UserMapping.xml copiar codelt;?xml version="1.0" encoding="UTF-8" ?gt;

lt;!DOCTYPE mapper PUBLIC "-//ibatis.apache/ / DTD Mapper 3.0//ES""_user(

cn_user_id, cn_user_name,

cn_user_password, cn_user_token,

cn_user_nick)

valores ( #{cn_user_id}, #{cn_user_name}, #{cn_user_password}, ​​​​#{cn_user_token}, #{cn_user_nick})lt;/insertgt;

lt; seleccione id="findByName" tipo de parámetro= "string" resultType="com.niuniu.entity.User"gt;

seleccione * de cn_user

donde cn_user_name=#{name}

<

p>lt;/selectgt;

lt;/mappergt;

Copiar código

(6) Escriba el controlador y pruébelo.

Copiar código

@Controller//Agregue esta anotación antes del nombre de la clase. Cuando se inicia Spring o se inicia el servicio web, Spring escaneará automáticamente todos los paquetes (por supuesto, esto puede ser). set, ver arriba Configuración de Springmvc): Es para decirle al servidor que esta clase es C en MVC. Esta clase puede recibir solicitudes de usuarios y procesar solicitudes de usuarios @RequestMapping("/note") // Puede haber muchos métodos en esto. clase de control, qué método se utiliza Para manejar las solicitudes de los usuarios, simplemente agregue @RequestMapping ("/ ruta de solicitud xxxxx") delante del método clase pública LoadNoteDetailController {@Resource//También es posible usar directamente @Resource para anotar un campo (campo). Al no exponer los métodos de establecimiento, el código es más compacto y proporciona el beneficio adicional de que el campo no se puede modificar.

//Como se demostrará a continuación, la anotación @Resource ni siquiera requiere un valor de cadena explícito. Si no se proporciona ningún valor, el nombre de dominio se utilizará como valor predeterminado.

//Cuando este método se aplica al método de establecimiento, el nombre predeterminado se deriva del atributo correspondiente. En otras palabras, el método denominado 'setDataSource' se utiliza para procesar el método denominado propiedad 'dataSource'. .

private NoteService noteService;

@RequestMapping("/loaddetail.do")// Asignado a la solicitud emitida por ajax en la página frontal de JSP, abra la página correspondiente ↑ @ResponseBody ↑ public NoteResult ejecutar(String noteId){ ↑NoteResult result=noteService.loadDetail(noteId); ↑return result //Cuando se procesa la solicitud, el valor de retorno determina a qué página saltará el usuario una vez completado el procesamiento; Esto es muy importante. utilidad de llamada de servicio}

}

Copiar código

Suplemento de conocimientos:

@Resource

@Resource predeterminado Según la inyección automática ByName, hay dos atributos importantes: nombre y tipo, y Spring resuelve el atributo de nombre de la anotación @Resource en el nombre del bean, y el atributo de tipo resuelve en el tipo del bean. Por lo tanto, si se usa el atributo de nombre, se usa la estrategia de inyección automática byName, y cuando se usa el atributo de tipo, se usa la estrategia de inyección automática byType. Si no se especifican atributos de nombre ni de tipo, se utilizará la estrategia de inyección automática byName a través del mecanismo de reflexión.

@ResponseBody

Función:

Esta anotación se utiliza para convertir el objeto devuelto por el método del Controlador al formato especificado a través del HttpMessageConverter apropiado, y luego escribe en el área de datos del cuerpo del objeto Respuesta.

Tiempo de uso:

Utilizar cuando los datos devueltos no son una página con etiquetas HTML, sino datos en algún otro formato (como json, xml, etc.);