Avenida de Castilla,1 - Edificio Best Point - Oficina 21B
28830 San Fernando de Henares (Madrid)
tel./fax: +34 91 675 33 06
[email protected] - www.autentia.com
Somos su empresa de Soporte a Desarrollo Informático.
Ese apoyo que siempre quiso tener...
1. Desarrollo de componentes y
proyectos a medida
Tecnología
Desarrollo
Sistemas
Gran Empresa
Producción
autentia
Certificación o Pruebas Verificación previaRFP
Concurso
Consultora 1
Consultora 2
Consultora 3
Equipo propio desarrollo
Piloto
3a
3b
1. Definición de frameworks corporativos.
2. Transferencia de conocimiento de nuevas arquitecturas.
3. Soporte al arranque de proyectos.
4. Auditoría preventiva periódica de calidad.
5. Revisión previa a la certificación de proyectos.
6. Extensión de capacidad de equipos de calidad.
7. Identificación de problemas en producción.
3. Arranque de proyectos basados en nuevas
tecnologías
¿Qué ofrece Autentia Real
Business Solutions S.L?
Para más información visítenos en:
Gestor portales (Liferay)
Gestor de contenidos (Alfresco)
Aplicaciones híbridas
Tareas programadas (Quartz)
Gestor documental (Alfresco)
Inversión de control (Spring)
BPM (jBPM o Bonita)
Generación de informes (JasperReport)
ESB (Open ESB)
Control de autenticación y
acceso (Spring Security)
UDDI
Web Services
Rest Services
Social SSO
SSO (Cas)
Spring MVC, JSF-PrimeFaces /RichFaces,
HTML5, CSS3, JavaScript-jQuery
JPA-Hibernate, MyBatis
Motor de búsqueda empresarial (Solr)
ETL (Talend)
Dirección de Proyectos Informáticos.
Metodologías ágiles
Patrones de diseño
TDD
2. Auditoría de código y recomendaciones de mejora
E-mail: Contraseña:
Inicio Quiénes somos Tutoriales Formación Comparador de salarios Nuestro libro Charlas Más
Deseo registrarme He olvidado mis datos de acceso
Entrar
Estás en:
Inicio Tutoriales Técnicas básicas con Mybatis
Catálogo de servicios Autentia
Últimas Noticias
Crónica del evento de Liferay en Madrid El primer capítulo de Terrakas ya está online Ya ha terminado la CAS 2011, ahora toca pensar cómo me gustaría que fuera la CAS 2012
Restrospectiva, Carrera de las empresas 2011
¿Qué ganan los demás con que tu vayas a una
Share | 0
DESARROLLADO POR:
Rubén Aguilera Díaz-Heredero
Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática, especialidad en Ingeniería del Software
Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación
Somos expertos en Java/J2EE
Ver tutoriales de Rubén Aguilera Díaz-Heredero
Regístrate para votar
Técnicas básicas con Mybatis
0. Índice de contenidos.
1. Entorno 2. Introducción 3. Técnicas básicas. 4. Conclusiones.1. Entorno
Este tutorial está escrito usando el siguiente entorno:
Hardware: Portátil Mac Book Pro 17" (2,6 Ghz Intel Core i7, 8 GB DDR3) Sistema Operativo: Mac OS X Snow Leopard 10.6.4
Spring 3.0.4 Maven 2.2.1
Eclipse 3.6 (Helios) con M2Eclipse y Spring IDE Mybatis 3.0.4
2. Introducción
En un tutorial anterior ya vimos todo lo necesario para configurar un proyecto en Maven para acceder a una base de datos con Spring y Mybatis. Recomiendo seguirlo antes de continuar con este donde vamos a ver una serie de técnicas básicas que podemos realizar con esta librería.
3. Técnicas básicas
En esta ocasión vamos a presentar una serie de técnicas básicas con Mybatis que resuelven problemas comunes en el acceso a datos de una forma limpia y cómoda.
5
Fecha de publicación del tutorial: 2011-11-07
07/11/11 Técnicas básicas con Mybatis Síguenos a través de: vayas a una conferencia? Histórico de NOTICIAS Últimos Tutoriales CSS3 Media Queries o cómo hacer un diseño adaptativo según el terminal
CSS Browser Selector o cómo olvidarnos de los hacks en CSS
Generar hojas de cálculo con fórmulas mediante Apache POI
Geoposicionamiento Web con HTML5 y Google Maps
Primeros pasos con Spring Web Flow 2
Últimos Tutoriales del Autor
CSS3 Media Queries o cómo hacer un diseño adaptativo según el terminal
CSS Browser Selector o cómo olvidarnos de los hacks en CSS
CAS REST: Cómo logarnos en CAS sin ir a la pantalla de login por defecto
Implementando SSO con CAS: ejemplo práctico Creación de un portlet con Primefaces Últimas ofertas de empleo 2011-09-08 Comercial Ventas -problemas comunes en el acceso a datos de una forma limpia y cómoda.
Devolver el id autonumérico de una inserción
Este es el típico problema que habría que resolver realizando una consulta inmediatamente después de realizar la inserción que es cuando el id se calcula. En Mybatis esto se resuelve con las
propiedades 'useGeneratedKeys' y 'keyProperty'. La primera indica que se utilizan ids generados y la segunda el id de la entidad que va almacenar el id generado. Ejemplo:
view plain print ?
01. <insert id="insert" parameterType="com.autentia.tutoriales.model.Persona" useGenerateKeys="true" keyProperty
02. insert into persona
03. (apellidos,direccion,nombre)
04. values
05. (#{apellidos},#{direccion},#{nombre})
06. </insert>
IMPORTANTE: tenemos que eliminar de la sentencia insert las referencias a la propiedad que es clave, ya que se va a autocalcular.
Creación de sentencias SQL con plantillas para su reutilización
A fin de reducir el código escrito en los XML's, Mybatis proporciona la etiqueta 'sql' que nos permite definir cualquier sentencia SQL para que sea embebida dentro de cualquier otra. Lo veremos mejor en el siguiente ejemplo:
Definimos una sentencia SQL que recupera todas las personas view plain print ?
01. <sql id="selectAllPersonas">
02. select * from Personas p
03. </sql>
Ahora si queremos definir una sentencia que recupere todos los registros sería: view plain print ?
01. <select id="getAllPersonas" resultType="com.autentia.tutoriales.model.Persona">
02. <include refid="selectAllPersonas"/>
03. </select>
Y ahora para implementar el resto de consultas sería tan sencillo como añadir la cláusula WHERE a la plantilla definida. De este modo si queremos recuperar a las personas que tengan un nombre determinado sería:
view plain print ?
01. <select id="getPersonasByNombre" parameterType="String" resultType="com.autentia.tutoriales.model.Persona"
02. <include refid="selectAllPersonas"/> WHERE p.Nombre = #{nombre}
03. </select>
De este modo reducimos considerablemente la cantidad de código SQL y , por consiguiente, el esfuerzo de mantenimiento.
Realizar Dynamic SQL
Otro de los problemas más típicos que nos encontramos es la necesidad de crear consultas dinámicas en base a una serie de parámetros que pueden existir o no, como ocurre cuando implementamos un buscador, por ejemplo. En este caso Mybatis nos proporciona una serie de etiquetas para facilitarnos la tarea. Entre las más importantes están: if, choose y where. Su funcionamiento lo entenderemos mejor con el siguiente ejemplo:
view plain print ?
01. <select id="searchPersonas" parameterType="com.autentia.tutoriales.model.PersonaOrder" resultType="com.autentia.tutoriales.model.Persona"
02. <include refid="selectAllPersonas"/>
03. <where>
04. <choose>
05. <when test="persona.nombre != '%%'">
06. AND p.Nombre like #{persona.nombre}
07. </when>
08. <otherwise>
09. AND p.Nombre = #{persona.nombre}
10. </otherwise>
11. </choose>
Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5
IMPULSA
Impulsores
Comunidad
¿Ayuda?
----sin clicks
+
+
+
+
+
+
+
+
0 personas
han traído clicks a esta página
powered by karmacracy Comercial Ventas -MADRID. 2011-09-03 Comercial Ventas -VALENCIA. 2011-08-19 Comercial Compras -ALICANTE. 2011-07-12
Otras Sin catalogar - MADRID.
2011-07-06
Otras Sin catalogar - LUGO.
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
Enviar comentario
(Sólo para usuarios registrados)
» Registrate
y accede a esta y otras ventajas
«
Anímate y coméntanos lo que pienses sobre este TUTORIAL:
12. <if test="persona.Apellidos != ''">
13. AND p.Apellidos >= #{persona.apellidos}
14. </if>
15. <if test="persona.direccion != ''">
16. AND p.Direccion like #{persona.direccion}
17. </if>
18. </where>
19. ORDER BY ${nombreColumna} ${direccionOrdenacion}
20. </select>
Nota: El objeto PersonaOrder tiene que contener los campos 'nombreColumna', que almacena un string con el nombre de la columna por el que ordenar y 'direccionOrdenacion' que almacena un string con la dirección de la ordenación que puede ser 'ASC' o 'DESC'. Es muy importante que la sustitución de string se haga con el $ y no con la #. Esto es porque con # Mybatis entiende que es un parámetro de una consulta parametrizada, mientras que, con $ solo realiza la sustitución del string. Además contendra una instancia de la clase Persona llamada 'persona', donde se pasan los parámetros de búsqueda. De ahí, que hagamos referencia a ellos con la notación punto.
4. Conclusiones
Hemos visto una serie de técnicas que nos proporciona Mybatis para resolver problemas cotidianos cuando trabajamos en una librería de acceso a datos. Para otros detalles recomiendo seguir su guía oficial que la podéis encontrar en http://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf
En sucesivos tutoriales seguiremos explicando otras características de esta estupenda librería como la forma de mapear las distintas relaciones entre entidades.
Cualquier duda o sugerencia en la zona de comentarios. Saludos.