mybatis学习小结(四)

这篇博客主要探讨了Mybatis中OGNL表达式的使用,以及如何解决实体类属性与数据库列名不对应的问题。作者介绍了两种方法:1) SQL查询时使用别名;2) 配置resultMap,通过property和column映射字段。文中详细展示了resultMap的配置示例,并指出在追求执行效率和开发效率之间的权衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.OGNL表达式:
    Object Graphic Navigation Language
    对象    图    导航       语言
    
    它是通过对象的取值方法来获取数据。在写法上把get给省略了。
    比如:我们获取用户的名称
        类中的写法:user.getUsername();
        OGNL表达式写法:user.username
    mybatis中为什么能直接写username,而不用user.呢:
        因为在parameterType中已经提供了属性所属的类,所以此时不需要写对象名

2. Mybatis中参数的深入:

 
  //根据queryVo中的条件查询用户
    List<User> findUserByVo(QueryVo vo);



package com.itheima.domain;

/**
 * ClassName:QueryVo
 * Package:com.itheima.domain
 * Description:
 *
 * @Date:2019/11/13 14:36
 * @Author:liangshuai@shuaige.com
 */
public class QueryVo {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}



 <!--根据queryVo的条件查询用户-->
    <select id="findUserByVo" parameterType="com.itheima.domain.QueryVo" resultType="com.itheima.domain.User">
         select *from user where username like #{user.username}
    </select>


 /**
     * 测试使用QueryVo作为查询条件
     * @throws Exception
     */
    @Test
    public void testFindByVo(){
        QueryVo vo=new QueryVo();
        User user=new User();
        vo.setUser(user);
        user.setUsername("%王%");
        List<User> users = userDao.findUserByVo(vo);
        for(User u:users){
            System.out.println(u);
        }
    }

 3.Mybatis中返回值深入:

     解决实体类属性和数据库列名不对应的两种方式:

     1)起别名  例如select id as userId,username as userName from user

     2)配置:id随便取,让select标签中的resultMap去引用, type表示要和表字段对应的实体类

<resultMap id="userMap" type="com.itheima.domain.User">
     <!--主键字段的对应-->
    <id property="userId" column="id"></id>
    <!--非主键字段的对应-->
    <result property="userName" column="username"></result>
    <result property="userSex" column="sex"></result>

</resultMap>
<!--查询所有-->
<select id="findAll" resultMap="userMap">
    select *FROM user ;
</select>

      如果在实际开发中追求执行效率,那毫无疑问用起别名,如果追求开发效率,就用配置的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值