zoukankan      html  css  js  c++  java
  • Mybatis学习笔记12

    choose (when, otherwise):分支选择;带了break的swtich-case

    示例代码:

    接口定义:
    package com.mybatis.dao;
    
    import com.mybatis.bean.Employee;
    
    import java.util.List;
    
    public interface EmployeeMapper {
        public List<Employee> getEmpsByConditionChoose(Employee employee);
    }
    
    
    mapper定义:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.mybatis.dao.EmployeeMapper">
        <!--
            choose (when, otherwise):分支选择;带了break的swtich-case
    	    如果带了id就用id查,如果带了lastName就用lastName查,只会进入其中一个
    	 -->
        <select id="getEmpsByConditionChoose" resultType="com.mybatis.bean.Employee">
            select * from tbl_employee
            <where>
                <choose>
                    <when test="id!=null">
                        id=#{id}
                    </when>
                    <when test="lastName!=null">
                        last_name like #{lastName}
                    </when>
                    <when test="email!=null">
                        email=#{email}
                    </when>
                    <otherwise>
                        gender=0
                    </otherwise>
                </choose>
            </where>
        </select>
    </mapper>
    
    测试代码:
    package com.mybatis.demo;
    
    import com.mybatis.bean.Employee;
    import com.mybatis.dao.EmployeeMapper;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    public class MyTest {
        public SqlSessionFactory getSqlSessionFactory() throws IOException {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            return new SqlSessionFactoryBuilder().build(inputStream);
        }
    
        @Test
        public void test() throws IOException {
            SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
            SqlSession openSession = sqlSessionFactory.openSession(true);
            try {
                EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
                List<Employee> emps = mapper.getEmpsByConditionChoose(new Employee(1, "%t%", null, null));
                for (Employee emp : emps) {
                    System.out.println(emp);
                }
            } finally {
                openSession.close();
            }
        }
    }
    
  • 相关阅读:
    了解 DICOM 基本协议与其相关
    C# PropertyInfo 反射实体部分字段
    ref(引用参数) 和 out(输出参数) 区别
    Linq Where Expression<Func<T,bool>> 查询条件
    随笔规范
    C# 集合分析
    C# 几种常用的数据类型
    关于 C# 方法参数的理解
    打算开始写博客了
    有趣的算法、逻辑面试题
  • 原文地址:https://www.cnblogs.com/xidian2014/p/10351630.html
Copyright © 2011-2022 走看看