@@ -302,12 +302,12 @@ ps.setInt(1,id);]]></source>
302
302
303
303
<p >A continuación se muestran unos ejemplos de insert, update y delete.</p >
304
304
305
- <source ><![CDATA[ <insert id="insertAuthor" parameterType="domain.blog.Author" >
305
+ <source ><![CDATA[ <insert id="insertAuthor">
306
306
insert into Author (id,username,password,email,bio)
307
307
values (#{id},#{username},#{password},#{email},#{bio})
308
308
</insert>
309
309
310
- <update id="updateAuthor" parameterType="domain.blog.Author" >
310
+ <update id="updateAuthor">
311
311
update Author set
312
312
username = #{username},
313
313
password = #{password},
@@ -316,7 +316,7 @@ ps.setInt(1,id);]]></source>
316
316
where id = #{id}
317
317
</update>
318
318
319
- <delete id="deleteAuthor" parameterType="int" >
319
+ <delete id="deleteAuthor">
320
320
delete from Author where id = #{id}
321
321
</delete>]]> </source >
322
322
@@ -328,7 +328,7 @@ ps.setInt(1,id);]]></source>
328
328
Por ejemplo, si la columna id de la tabla Author del ejemplo siguiente fuera autogenerada el insert statement se escribiría de la siguiente forma:
329
329
</p >
330
330
331
- <source ><![CDATA[ <insert id="insertAuthor" parameterType="domain.blog.Author" useGeneratedKeys="true"
331
+ <source ><![CDATA[ <insert id="insertAuthor" useGeneratedKeys="true"
332
332
keyProperty="id">
333
333
insert into Author (username,password,email,bio)
334
334
values (#{username},#{password},#{email},#{bio})
@@ -339,7 +339,7 @@ Por ejemplo, si la columna id de la tabla Author del ejemplo siguiente fuera aut
339
339
340
340
<p >A continuación se muestra un ejemplo muy simple que genera un id aleatorio (algo que posiblemente nunca harás pero que demuestra la flexibilidad de MyBatis y cómo MyBatis ignora la forma en la que se consigue la clave):
341
341
</p >
342
- <source ><![CDATA[ <insert id="insertAuthor" parameterType="domain.blog.Author" >
342
+ <source ><![CDATA[ <insert id="insertAuthor">
343
343
<selectKey keyProperty="id" resultType="int" order="BEFORE">
344
344
select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
345
345
</selectKey>
@@ -399,7 +399,7 @@ Por ejemplo, si la columna id de la tabla Author del ejemplo siguiente fuera aut
399
399
<p >Este fragmento de SQL puede ser incluido en otra sentencia, por ejemplo:
400
400
</p >
401
401
402
- <source ><![CDATA[ <select id="selectUsers" parameterType="int" resultType="hashmap ">
402
+ <source ><![CDATA[ <select id="selectUsers" resultType="map ">
403
403
select <include refid="userColumns"/>
404
404
from some_table
405
405
where id = #{id}
@@ -410,7 +410,7 @@ Por ejemplo, si la columna id de la tabla Author del ejemplo siguiente fuera aut
410
410
<p >En todos los statements anteriores se han mostrado ejemplos de parámetros simples. Los parámetros son elementos muy potentes en MyBatis. En los casos simples, probablemente el 90% de los casos, no hay mucho que decir sobre ellos, por ejemplo:
411
411
</p >
412
412
413
- <source ><![CDATA[ <select id="selectUsers" parameterType="int" resultType="User">
413
+ <source ><![CDATA[ <select id="selectUsers" resultType="User">
414
414
select id, username, password
415
415
from users
416
416
where id = #{id}
@@ -419,7 +419,7 @@ Por ejemplo, si la columna id de la tabla Author del ejemplo siguiente fuera aut
419
419
<p >El ejemplo anterior muestra un mapeo muy simple de parámetro con nombre. El atributo parameterType se ha informado a “int”, por lo tanto el nombre del parámetro puede ser cualquiera. Los tipos primitivos y los tipos de datos simples como Integer o String no tienen propiedades relevantes y por tanto el parámetro será reemplazado por su valor. Sin embargo, si pasas un objeto complejo, entonces el comportamiento es distinto. Por ejemplo:
420
420
</p >
421
421
422
- <source ><![CDATA[ <insert id="insertUser" parameterType="User" >
422
+ <source ><![CDATA[ <insert id="insertUser" parameterType="User">
423
423
insert into users (id, username, password)
424
424
values (#{id}, #{username}, #{password})
425
425
</insert>]]> </source >
@@ -498,7 +498,7 @@ Por ejemplo, si la columna id de la tabla Author del ejemplo siguiente fuera aut
498
498
<p >Ya has visto algunos ejemplos de un statement sencillo que no requiere un ResultMap explícito. Por ejemplo:
499
499
</p >
500
500
501
- <source ><![CDATA[ <select id="selectUsers" parameterType="int" resultType="hashmap ">
501
+ <source ><![CDATA[ <select id="selectUsers" resultType="map ">
502
502
select id, username, hashedPassword
503
503
from some_table
504
504
where id = #{id}
@@ -541,7 +541,7 @@ public class User {
541
541
Este JavaBean puede mapearse desde un ResultSet de forma casi tan sencilla como la HashMap.
542
542
</p >
543
543
544
- <source ><![CDATA[ <select id="selectUsers" parameterType="int" resultType="com.someapp.model.User">
544
+ <source ><![CDATA[ <select id="selectUsers" resultType="com.someapp.model.User">
545
545
select id, username, hashedPassword
546
546
from some_table
547
547
where id = #{id}
@@ -554,7 +554,7 @@ public class User {
554
554
<typeAlias type="com.someapp.model.User" alias="User"/>
555
555
556
556
<!-- In SQL Mapping XML file -->
557
- <select id="selectUsers" parameterType="int" resultType="User">
557
+ <select id="selectUsers" resultType="User">
558
558
select id, username, hashedPassword
559
559
from some_table
560
560
where id = #{id}
@@ -564,7 +564,7 @@ public class User {
564
564
En estos casos MyBatis crea automáticamente un RestulMap entre bastidores para mapear las columnas a las propiedades del JavaBean en base a sus nombres. Si los nombres de las columnas no coinciden exactamente, puedes emplear alias en los nombres de columnas de la sentencia SQL (una característica estándar del SQL) para hacer que coincidan. Por ejemplo:
565
565
</p >
566
566
567
- <source ><![CDATA[ <select id="selectUsers" parameterType="int" resultType="User">
567
+ <source ><![CDATA[ <select id="selectUsers" resultType="User">
568
568
select
569
569
user_id as "id",
570
570
user_name as "userName",
@@ -587,7 +587,7 @@ public class User {
587
587
Y el statement que las referencia utiliza para ello el atributo resultMap (fíjate que hemos eliminado el atributo resultType). Por ejemplo:
588
588
</p >
589
589
590
- <source ><![CDATA[ <select id="selectUsers" parameterType="int" resultMap="userResultMap">
590
+ <source ><![CDATA[ <select id="selectUsers" resultMap="userResultMap">
591
591
select user_id, user_name, hashed_password
592
592
from some_table
593
593
where id = #{id}
@@ -606,7 +606,7 @@ public class User {
606
606
<p >Por ejemplo, ¿cómo mapearías este statement?</p >
607
607
608
608
<source ><![CDATA[ <!-- Very Complex Statement -->
609
- <select id="selectBlogDetails" parameterType="int" resultMap="detailedBlogResultMap">
609
+ <select id="selectBlogDetails" resultMap="detailedBlogResultMap">
610
610
select
611
611
B.id as blog_id,
612
612
B.title as blog_title,
@@ -1497,7 +1497,7 @@ SELECT * FROM POST WHERE BLOG_ID = #{id}]]></source>
1497
1497
presentes en el ResultSet y que no tienen un mapeo manual se auto-mapearán. Posteriormente se procesarán los mapeos manuales.
1498
1498
En el siguiente ejemplo las columnas <i >id</i > y <i >userName</i > se auto-mapearán y la columna <i >hashed_password</i > se mapeará manualmente.</p >
1499
1499
1500
- <source ><![CDATA[ <select id="selectUsers" parameterType="int" resultType="User">
1500
+ <source ><![CDATA[ <select id="selectUsers" resultType="User">
1501
1501
select
1502
1502
user_id as "id",
1503
1503
user_name as "userName",
@@ -1554,6 +1554,21 @@ SELECT * FROM POST WHERE BLOG_ID = #{id}]]></source>
1554
1554
columna con nombre <i >id</i > en el ResultSet por lo que el id de Author se rellenará con el id de Blog, y eso no era lo que esperabas.
1555
1555
Por tanto usa la opción <code >FULL</code > con cuidado.
1556
1556
</p >
1557
+
1558
+ <p >
1559
+ Independientemente del nivel de auto-mapeo configurado puedes activar o desactivar el auto-mapeo para un statement especifico
1560
+ añadiendole el atributo<code >autoMapping</code >:
1561
+ </p >
1562
+
1563
+ <source ><![CDATA[ <select id="selectUsers" resultType="User" autoMapping="false">
1564
+ select
1565
+ user_id as "id",
1566
+ user_name as "userName",
1567
+ hashed_password
1568
+ from some_table
1569
+ where id = #{id}
1570
+ </select>]]> </source >
1571
+
1557
1572
1558
1573
</subsection >
1559
1574
<subsection name =" cache" >
0 commit comments