Mybatis select查询

Mybatis select查询,第1张

Mybatis select查询 传递参数

如Mybatis 入门示例,我们直接传递简单参数,可以在xml中直接使用。多个参数也可以同样传递。如果要传递复杂参数,我们需要适应select标签的parameterType属性。

传递JavaBean对象参数
	
        select * from emp where empno = #{empno}
    

这里的parameterType我们只用了map来表示,其实其就是java.util.Map。那么我们上面的Emp对象可以这样表示吗?答案当然可以,但是需要我们在mybatis-config.xml中做些配置。

mybatis-config.xml中配置别名



    
    

    
    
        
    

    
    
        
            
            
            
            
            
            
            
        
    
    
    
    
        
    

注意我们添加的typeAliases标签,这里我们别名了一个包,就是Emp对应所在的包。这样我们就可以直接使用emp来作为com.yyoo.mybatis.beans.Emp的替代了。(注意:emp是对应JavaBean的首字母小写名称,这是Mybatis约定的,如果想要改变一个名称请使用@Alias注解在对应的JavaBean来修改,建议是不做修改)

// 将别名定义为myEmp
@Alias("myEmp")
public class Emp 
直接别名对应的JavaBean

  
  
  
  
  
  

定义好别名后,我们的xml中用到Emp对象的配置简化如下






    
    
        select * from emp where empno = #{empno}
    

    
    select * from emp where empno = #{empno}

查询结果会自动映射到Emp对象上

我们前面的Mapper接口的返回值都是Emp对象,但是查询来说,如果不是通过id(主键)查询,一般情况下我们的接口方法都应该是一个集合对象。所以我们的Mapper接口的定义应该如下:

    Emp selectEmpByNo(@Param("empno") Long id);

    List selectEmp(Emp emp);

    List selectEmpByMap(Map map);

目前我们的查询是把所有满足条件的数据全部查询出来,当结果数据量特别大的时候这也是个问题,需要进行分页查询,所以此处还不满足我们实际项目中的查询的要求,关于分页,我们将在后续讲解。

使用resultType映射规则
  1. MyBatis 会在幕后自动创建一个 ResultMap,再根据属性名来映射列到 JavaBean 的属性上。
  2. 数据库字段我们一般是下划线隔开的命名,如:user_name,那么自动映射到JavaBean上的字段名称一般为userName。(如果数据库字段名称和JavaBean字段名称不对应,我们可以在select查询语句中使用sql别名的方式将之对应起来)如下:

综上,我们一般情况下直接使用JavaBean进行自动映射即可,但实际项目中往往比较复杂,JavaBean自动映射,在处理复杂映射关系是还是不够灵活,所以我们还是需要自定义ResultMap来实现。关于ResultMap,我们在下一篇讲解。

上一篇:Mybatis XML映射文件
下一篇:待续

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5696740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存