Association in MyBatis is used in conjunction with select

Association joint select uses places that are prone to travel problems

 

mapper configuration:

 

Java code   Favorite code
  1. <resultMap type="com.demo.sys.entity.Menu" id="menuMap">  
  2.     <id property="id" column="id" />  
  3.     <result property="name" column="menu_name" />  
  4.     <result property="url" column="url" />  
  5.     <result property="active" column="isactive" />  
  6.     <result property="createDate" column="createdate" />  
  7.     <result property="updateDate" column="updatedate" />  
  8.     <result property="bak1" column="bak1" />  
  9.     <result property="bak2" column="bak2" />  
  10.     <result property="bak3" column="bak3" />  
  11.     <result property="locale" column="locale" />  
  12.     <result property="orderNum" column="ordernum" />  
  13.     <association property="module" column="module_id"  resultMap="moduleMap" select="queryModule">  
  14.             </association>  
  15. </resultMap>  

 

Java code   Favorite code
  1. <resultMap type="com.demo.sys.entity.Module" id="moduleMap">  
  2.     <id property="id" column="id" />  
  3.     <result property="name" column="module_name" />  
  4.     <result property="remark" column="remark" />  
  5.     <result property="createDate" column="createdate" />  
  6.     <result property="updateDate" column="updatedate" />  
  7. </resultMap>  

 

Java code   Favorite code
  1. <select id="queryModule" resultMap="moduleMap" >  
  2.     select * from sys_module where id =#{id}  
  3. </select>  

 

 

This configuration causes problems:

Many of the properties of Menu.module are null, except that the id is not empty.

 

After debugging, it was found that the problem lies in:

Java code   Favorite code
  1. <association property="module" column="module_id"  resultMap="moduleMap" select="queryModule">  
  2.                 </association>  

 

去掉resultMap,修改为:

Java代码   Favorite code
  1. <association property="module" column="module_id"  select="queryModule">  
  2.                 </association>  

 

 

结果Menu.module的属性可以正确被mybaties设置进去,都有值了。

 

 

 

 

Association联合select使用值得注意的细节地方:

这是我使用mybatis的Association联合select使用存着问题的地方,

 

 

Java代码   Favorite code
  1. <association property="module" column="module_id"   select="queryModule">  
  2.           
  3.         </association>  

 

    mybatis will push into the SQL input parameter where select is queryModule according to the value similar to resultSet.getInt("module_id").

Java code   Favorite code
  1. <select id="queryModule" resultMap="moduleMap" >  
  2.     select * from sys_module where id =#{id}  
  3. </select>  

 

  I've been struggling with whether #{id} refers to Menu.id or the module's primary key or foreign key id attribute.

 

   The SQL input parameter of select as queryModule can be given any name, as long as the input parameter is of the same type as the value pushed in, it can be written as:

  

Java code   Favorite code
  1. select * from sys_module where id =#{jjjasdasdid}  

 

Regardless of the input parameter names, mybatis will eventually execute:

 效果为:select * from sys_module where id =resultSet.getInt("module_id");

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325450490&siteId=291194637