Red de conocimiento informático - Problemas con los teléfonos móviles - Pasos generales de la integración de Spring MVC Mybatis

Pasos generales de la integración de Spring MVC Mybatis

1. Breve explicación

Frameworks utilizados: spring, springmvc, mybatis

Herramientas de desarrollo: eclipse, apache-tomcat-6.0.39

Gestión de paquetes Jar: maven

Proceso de desarrollo

1. Establecer el proyecto

1. Introducir paquetes jar relevantes:

< dependencias>

junit

junit

4.8.1

prueba

javax.servlet

servlet-api

2.5

proporcionada

2. mybatis Contenido relacionado y pruebas

1. Introducir el paquete JAR

UTF-8

aaaaMMddHHmmss

3.3.1

junit

junit

4.8.1

test

javax.servlet

< artefactoId>servlet-api

2.5

proporcionado

org.mybatis

mybatis

< versión>${mybatis.version}

mysql

mysql-connector-java

5.1.25

La etiqueta se usa en pom. Enfóquese en esto. En este enlace, se agregan el paquete jar para la conexión de la base de datos y el paquete jar para mybatis. Si desea poder operar la base de datos aquí, debe leer mediante programación el archivo de configuración, que generalmente se coloca debajo del classpath. El nombre aquí es conf.xml. En esto se realizan dos cosas principales:

a: configurar la información básica de la base de datos, b: presentar el archivo mapper.xml.

La siguiente es una descripción detallada del contenido de este paso:

1. Cree el objeto de entidad im.fenqi.study.user.entity.User Aquí, importe un complemento de lombok. en. Este complemento requiere Para la instalación (específicamente Baidu), puede escribir el método set/get sin mostrarlo.

2. Cree el archivo im/fenqi/study/user/mapper/UserMapper.xml. Esto se usa para operar la base de datos y generalmente se usa junto con im.fenqi.study.user.mapper. UserMapper. Por favor, preste atención.

El valor del espacio de nombres en el asignador de etiquetas es la clase JAVA emparejada im.fenqi.study.user.mapper.UserMapper

La etiqueta resultMap: es para resolver el nombre del atributo y base de datos de la clase de entidad El problema de los nombres de campos inconsistentes. Existe una diferencia entre las claves primarias y otras claves.

Los campos y atributos definidos en resultMap deben tener el contenido correspondiente en las tablas y entidades correspondientes; de lo contrario, se informará un error.

Recorte de etiquetas: puede manejar el usuario (id_usuario, nombre_usuario, contraseña) y otros problemas. Las subetiquetas internas son:

prefijo: el prefijo cubre y agrega su contenido

.

suffix: el sufijo anula y agrega su contenido

prefixOverrides: condiciones para el juicio del prefijo

Busque el primer contenido que sea igual a la condición y luego cámbielo al contenido en prefijo

Ejemplo:

Según las condiciones, la cadena en trim se considera "AND id=#{ id} AND nombre como #{name}"

Busque el AND frontal (contenido de prefixOverrides) y reemplácelo con donde (contenido del prefijo)

Si no hay contenido de prefixOverrides, agréguelo directamente al frente.

suffixOverrides: condiciones para juzgar el sufijo

Similar a prefixOverrides.

Etiquetar si: relativamente simple,

Etiquetar sql:

>p>

id, user_id,user_name,contraseña

Escenario de uso:

seleccione del usuario

Cuando hay muchos campos que deben devolverse, no es necesario escribirlos cada vez

3. Cree el im.fenqi.study.user .mapper.UserMapper clase esta y la anterior Los archivos aparecen en pares Esta es una interfaz El nombre del método en la interfaz debe ser consistente con la identificación en UserMapper.xml

4. p>

SqlSession se utiliza principalmente para pruebas locales. El objeto 2 requiere que se cree el objeto SqlSessionFactory. Primero hablemos sobre cómo se obtiene el objeto SqlSessionFactory.

a: Obtenga el flujo de entrada del archivo de configuración. config.xml:

String recurso = " /conf.xml";

//Buscar desde classpath

InputStream recursoAsStream = Object.class.getResourceAsStream(recurso );

b: Obtener el objeto SqlSessionFactory

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);

c: Obtener el objeto SqlSession:

SqlSession session = factory.openSession();

d: Obtener el objeto de capa dao

UserMapper userMapper = session.getMapper(UserMapper.class);

d: Insertar datos

Usuario usuario = new User();

user.setUserId(UUID.randomUUID().toString());

user.setUserName("zw1");

user.setPassword("123456");

int count = userMapper.saveUserInfo(user);

session.commit();

System .out.println("insert:"+count);

3. Presente el marco de Spring y pruebe

Primero, debe introducir los paquetes jar necesarios, principalmente los paquetes spring necesarios y el soporte de primavera mybatis, paquete jdbc

>p>

org.springframework>p>

spring-core

${spring.version }

gt;

org.springframework

frijoles de primavera

${spring.version}

org.springframework

spring-context

${spring.version}

org.springframework

expresión-primavera

${spring.version}

org.mybatis

mybatis-spring

1.2.1

org .springframework

spring-jdbc

${spring.version}

En este momento, el archivo de configuración conf.xml ya no es necesario y la configuración está unificada en spring.xml

1 Configurar la conexión de la base de datos

< nombre de propiedad="url" valor="jdbc:mysql://localhost:3306/SSM_XML">

< /propiedad&

gt;

Por supuesto, esta configuración se puede escribir en el archivo de propiedades (hablaremos de ello más adelante)

2. Después de la introducción de Spring, el objetivo principal es utilizar el contenedor IOC para. Crear objetos SqlSessionFactory, SqlSession y UserMapper no se agregaron antes de que se agregara Spring. La creación de objetos está codificada por nosotros para resolver estos problemas y finalmente devuelve el UserMapper directamente para que lo usemos. Todo lo demás se hace en configuración.

El proceso de operación específico se analizará en detalle más adelante

3. Crear SqlSessionFactory

La creación de este objeto requiere la ubicación de la fuente de datos y el archivo de configuración mapper.xml

< /property>

4. Crea un objeto UserMapper (esta parte debería estudiarse más detenidamente)

Necesitas un SqlSessionFactory objeto para crear un objeto SqlSession y luego crear un objeto UserMapper, por lo que se requiere la ubicación de las interfaces SqlSessionFactory y UserMapper MapperScannerConfigurer es un paquete de escaneo. No cree MapperFactoryBean cada vez

< bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

5. Pruebe para obtener el objeto

ApplicationContext context = new ClassPathXmlApplicationContext("/spring.xml");

UserMapper bean = context.getBean("userMapper",UserMapper.class) ;

List userByUser = bean. getUserByUser(null);

6. Esta prueba también puede usar la propia clase de prueba de Spring

@RunWith(SpringJUnit4ClassRunner). .class)

@ContextConfiguration(" /spring.xml")

prueba de primavera de clase pública {

@Autowired

UserMapper privado userMapper ;

@Test

public void save()

{

Usuario usuario = nuevo Usuario("zw1", 20);

userMapper.save(usuario

}

;

p>

4. Presente el marco springmvc

Primero presente el paquete JAR springmvc

org.springframework

spring-web

${spring.version }

org.springframework

< artefactoId>spring-webmvc

${spring.version}

Necesario en esta vez Configure web.xml y también configure springmvc.xml

1 Configure web.xml

Agregue el oyente y la ruta del archivo spring para cargar spring.xml

<. p>

org.springframework.web. contexto. ContextLoaderListener

contextConfigLocation

classpath:spring.xml

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springmvc.xml

p>

springmvc

/*

Configurar Dispatcherservlet y configuración springmvx.xml Ubicación del archivo

2. Configure el archivo springmvc.xml

springmvc.xml configura principalmente el controlador, handlerMapper, HandlerAdapter y renderizador

< /bean

3. Los tipos de controladores y configuraciones deben ser consistentes

la clase pública UserController implementa el Controlador{

UserService privado userService;

ModelAndView público mano

leRequest (solicitud HttpServletRequest, respuesta HttpServletResponse) arroja una excepción {

ModelAndView modelAndView = new ModelAndView();

List userList = userService.getUserByUser(null);

modelAndView.addObject("usuario", userList.get(0));

modelAndView.setViewName("mipágina");

return modelAndView;

}

}

5. Problemas que surgen durante el proceso de integración

1.

Si uso XML para configurar el contenedor IOC y defino una clase yo mismo, si quiero inicializar las propiedades de esta clase con objetos en el contenedor IOC, debo proporcionar métodos set/get.

2. JSP no puede usar expresiones el. Este problema debe resolverse.

Este problema es la falta de paquetes jar. Si desea usar jsp sin problemas, debe hacerlo. agregue los siguientes paquetes El paquete final El paquete anterior se agregó antes

javax.servlet

servlet-api

< versión>2.5

proporcionada

< !--JSP -->

javax.servlet.jsp

jsp-api< /artifactId>

2.2

proporcionado

javax.servlet

jstl

1.2>p>

< /dependency>

taglibs

estándar

1.1.2

3. Es necesario analizar el proceso de configuración de mybatis y spring. en detalle

R: Hay muchas configuraciones en él. Esta vez explicaré en detalle el sqlSessionFactory y MapperScannerConfigurer que usamos aquí

sqlSessionFactory: los archivos de configuración dataSource y mapper.xml. son necesarios al crear

MapperScannerConfigurer: se puede integrar Para escanear, puede usar comodines para proporcionar nombres de paquetes básicos. Necesita sqlSessionFactoryBeanName para crear un objeto sqlSessionFactory, luego crear un objeto SqlSession y luego crear cada objeto asignador. a través del objeto SqlSession.