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>
dependencia >
2. mybatis Contenido relacionado y pruebas
1. Introducir el paquete JAR
< artefactoId>servlet-api < versión>${mybatis.version} La etiqueta a: configurar la información básica de la base de datos, b: presentar el archivo mapper.xml. p> p> 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: id, user_id,user_name,contraseña Escenario de uso: seleccione 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); p> 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
gt;
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">
gt;
p>
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
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
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
< artefactoId>spring-webmvc
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>
p>
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
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
p>
< versión>2.5
< !--JSP --> p>
< /dependency>
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.