直接贴图,注解在代码上,其他的配置文件在学习一中就不贴了

1 数据库

  

2 实体类

  

package com.home.entity;/*** 此类是: 用户实体类* @author hpc* @2017年1月15日下午2:16:27*/
public class User {private Integer user_id;// 用户idprivate String user_name;// 用户名称private String user_pwd;// 用户密码public User(Integer user_id, String user_name, String user_pwd) {super();this.user_id = user_id;this.user_name = user_name;this.user_pwd = user_pwd;}public User(){}public Integer getUser_id() {return user_id;}public void setUser_id(Integer user_id) {this.user_id = user_id;}public String getUser_name() {return user_name;}public void setUser_name(String user_name) {this.user_name = user_name;}public String getUser_pwd() {return user_pwd;}public void setUser_pwd(String user_pwd) {this.user_pwd = user_pwd;}@Overridepublic String toString() {return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_pwd=" + user_pwd + "]";}}

3.动态sql配置

 

<?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.home.mapper"><!-- mybatis中的动态标签和struts,JSTL标签十分相似,如果学习过的话,很容易就理解了 --><select id="loadUser" resultType="user" parameterType="user"><!-- 如果user_id 等于4 就执行这条sql语句,test中的是实体类的属性,是通过反射获取出来的,所以我们这里传进来的参数是一个实体类对象 --><if test="user_id == 4">select *from users uwhere u.user_id=#{user_id}</if><!-- 如果user_id不等于空和不等于4 就进入这一个,逻辑运算符 and,or ==,!= >,>= <,<= ...等--><if test="user_id != null and user_id !=4"><!-- choose相当于java中的switch --><choose><!-- when 相当于case --><!-- 只有当user_id不等于空的时候才查找对应的user信息 --><when test="user_id > 4">select *from users uwhere u.user_id=#{user_id}</when><!-- 相当于default --><!-- 当user_id等于空就执行下面这条sql,查询名字为hpc的用户 --><otherwise>select *from userswhere user_name='hpc'</otherwise></choose></if></select>
</mapper>

4.测试类

package com.home.mybatis;import java.io.IOException;import org.apache.ibatis.session.SqlSession;import com.home.entity.User;public class TestApp {public static void main(String[] args) throws IOException {// 我将获取session的代码封装成了一个工具类,直接用工具类来获取sessionSqlSession session = SessionUtils.getSession("mybatis.xml");String loadUser = "com.home.mapper.loadUser";// 看会不会动态的去获取,按理论应该是执行if标签的sql,用户为id为4的User user = session.selectOne(loadUser, new User(4, null, null));System.out.println("看会不会动态的去获取,按理论应该是执行if标签的sql,用户为id为4的");System.out.println(user);// 看会不会动态的去获取,按理论应该是执行otherwise标签的sql,用户为hpc的user = session.selectOne(loadUser, new User(2, null, null));System.out.println("看会不会动态的去获取,按理论应该是执行otherwise标签的sql,用户为hpc的");System.out.println(user);// 看会不会动态的去获取,按理论应该是执行when标签的sql,用户为5的user = session.selectOne(loadUser, new User(5, null, null));System.out.println("看会不会动态的去获取,按理论应该是执行when标签的sql,用户为5的");System.out.println(user);// 将数据属性到数据中去
        session.commit();// 关闭session
        session.close();}
}

5 .结果

看会不会动态的去获取,按理论应该是执行if标签的sql,用户为id为4的
User [user_id=4, user_name=zll, user_pwd=123]
看会不会动态的去获取,按理论应该是执行otherwise标签的sql,用户为hpc的
User [user_id=3, user_name=hpc, user_pwd=123]
看会不会动态的去获取,按理论应该是执行when标签的sql,用户为5的
null

转载于:https://www.cnblogs.com/mohehpc/p/6287388.html

mybatis学习笔记四(动态sql)相关推荐

  1. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html

  2. Mybatis学习笔记之---动态sql中标签的使用

    动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段 ...

  3. Mybatis学习笔记13 - 动态sql之set标签

    示例代码: 接口定义: package com.mybatis.dao;import com.mybatis.bean.Employee;public interface EmployeeMapper ...

  4. JavaWeb学习笔记(动态SQL)

    JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...

  5. mybatis学习7之动态sql

    动态sql环境搭建和数据准备 工具类,获取UUID package com.shan.utils;import org.junit.Test;import java.util.UUID;public ...

  6. MyBatis学习笔记(四) 注解

    使用MyBatis注解开发,可以省去类配置文件,简洁方便.但是比较复杂的SQL和动态SQL还是建议书写类配置文件. 注解还是不推荐使用的.只是了解了解!简单的CRUD可以使用注解.简单写写. 把之前的 ...

  7. 【应用篇】MyBatis学习笔记

    MyBatis学习笔记 一 环境配置 1 什么是MyBatis? ​ MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参 ...

  8. 超详细Mybatis学习笔记(可供下载)

    文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...

  9. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

最新文章

  1. IOS文本框readonly时焦点事件
  2. java基础入门传智播客答案,GitHub已标星16k
  3. linux的软件很大,linux软件raid10,机器相同,结果差异很大
  4. 宝藏新品牌成长白皮书:新品牌心智与营销增长方法论
  5. 基于asp.net的网上书店商城设计与实现
  6. 这部计算机27厘米宽英语怎么说,24/27/32寸电脑显示器尺寸多大?长宽多少厘米?显示屏长宽与面积的算法...
  7. 比特飞使用的是什么主题
  8. 构建springmvc+dubbo分布式平台-dubbo简介
  9. 万科集团:掌握采购主动权,实现采购流程精细化管理
  10. 计算机的所有符号,电脑上怎么打各种符号
  11. MTK 平台TP 驱动
  12. 怎样让PHP提示错误信息
  13. HTML入门学习笔记+详细案例
  14. 完了,又火一个 。。。
  15. 用JS来动态设置CSS样式
  16. 【Love2d从青铜到王者】第十三篇:Love2d之游戏:射击敌人(Game: Shoot the enemy)
  17. 猿创征文|《Java》关键字大全-小结
  18. 阿里云负载均衡 SLB CLB 虚拟服务器组配置
  19. 《精进:如何成为一个很厉害的人》读书笔记
  20. 【Python】Python之end()关键字使用

热门文章

  1. 使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器
  2. CCTextureCache的多线程加载原理和使用
  3. DevCon.exe (DevCon Command Line Utility)
  4. java中Collections常用方法总结(包括sort,copy,reverse等)
  5. 分治法在二叉树遍历中的应用(JAVA)--二叉查找树高度、前序遍历、中序遍历、后序遍
  6. jQuery教程08-属性筛选选择器
  7. 正在搜索需要的文件_【数澜发布-澜寻】智能内容搜索引擎,释放“机器阅读” 潜力...
  8. av linux,AV Linux 新版发布,多少人知道
  9. eureka注册中心HA集群搭建
  10. 需求分析三层境界,你到哪层了?