MyBatis SQL映射文件和 查询的三种方式

首先先介绍下SQL映射下的几个顶级元素

在这里插入图片描述

SQL映射文件的几个顶级元素

  1. select – 映射查询语句
  2. insert – 映射插入语句
  3. delete – 映射删除语句
  4. update – 映射更新语句
  5. cache – 配置给定命名空间的缓存
  6. cache-ref – 从其他命名空间引用缓存配置
  7. resultMap – 用来描述数据库结果集和对象的对应关系
  8. sql – 可以重用的SQL块,也可以被其他语句引用
  9. mapper – namespace

resultType 和 resultMap有什么区别

  • ResultType对应entity中的一个对象
    ResultMap也是返回值类型,但是范围要大于ResultType,可以存键值对

MyBatis 核心对象的生命周期

  • 工人 SqlSessionFatcoryBuilder 它的最佳生命周期在方法体内(局部变量)只要做完增删改查的操作就会销毁
  • 工厂 SqlSessionFatcory 它的最佳生命周期是从应用服务启动开始到应用服务程序结束(整个应用内)
  • 产品 SqlSession 一次会话的请求 每做一次查询都会开启一次 和销毁一次

查询的操作

单元测试依赖

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
        </dependency>

在 mybatis-config.xml里面配置打印日志可以在单元测试清晰看见SQL语句

 <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

查询所有用户

  • 没有条件的时候的查询方法
    UserMapper接口方法
 /**
     * 查询所有用户
     * @return
     */
    public List<SysUser> getUserList();

UserMapper.xml SQL

  <select id="getUserList" resultType="sysuer">
        select * from t_sys_user
    </select>
  • 有多个查询条件时候的查询方法
/**
* 根据用户名称和用户角色进行查询
* 多个参数的时候一定要加上@Param才能实现查询,不然会报错
* @return
*/
List<User> findByUserNameAndUserRole(@Param("userName") String userName,@Param("userRole") Integer userRole);

<select id="findByUserNameAndUserRole" resultType="User">
    select * from smbms_user where userName like concat("%",#{userName},"%")
    and userRole=#{userRole}
</select>
  • 也可以用对象入参
/**
* 根据用户名称和用户角色进行查询
* @return
*/
List<User> findByUserNameAndUserRole1(User user);

<select id="findByUserNameAndUserRole1" resultType="User" parameterType="User">
    select * from smbms_user where userName like concat("%",#{username},"%")
    and userRole=#{userrole}
</select>
  • 还可以封装成map进行传参
/**
* 根据用户名称和用户角色进行查询
* @return
*/
List<User> findByUserNameAndUserRole2(Map<String,Object> map);
    
<select id="findByUserNameAndUserRole2" resultType="User">
    select * from smbms_user where userName like concat("%",#{username},"%")
    and userRole=#{userrole}
</select>

单元测试类

在这里插入图片描述

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值