mybatis学习笔记四(动态sql)
直接贴图,注解在代码上,其他的配置文件在学习一中就不贴了
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)相关推荐
- MyBatis:学习笔记(4)——动态SQL
MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html
- Mybatis学习笔记之---动态sql中标签的使用
动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段 ...
- Mybatis学习笔记13 - 动态sql之set标签
示例代码: 接口定义: package com.mybatis.dao;import com.mybatis.bean.Employee;public interface EmployeeMapper ...
- JavaWeb学习笔记(动态SQL)
JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...
- mybatis学习7之动态sql
动态sql环境搭建和数据准备 工具类,获取UUID package com.shan.utils;import org.junit.Test;import java.util.UUID;public ...
- MyBatis学习笔记(四) 注解
使用MyBatis注解开发,可以省去类配置文件,简洁方便.但是比较复杂的SQL和动态SQL还是建议书写类配置文件. 注解还是不推荐使用的.只是了解了解!简单的CRUD可以使用注解.简单写写. 把之前的 ...
- 【应用篇】MyBatis学习笔记
MyBatis学习笔记 一 环境配置 1 什么是MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参 ...
- 超详细Mybatis学习笔记(可供下载)
文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
最新文章
- IOS文本框readonly时焦点事件
- java基础入门传智播客答案,GitHub已标星16k
- linux的软件很大,linux软件raid10,机器相同,结果差异很大
- 宝藏新品牌成长白皮书:新品牌心智与营销增长方法论
- 基于asp.net的网上书店商城设计与实现
- 这部计算机27厘米宽英语怎么说,24/27/32寸电脑显示器尺寸多大?长宽多少厘米?显示屏长宽与面积的算法...
- 比特飞使用的是什么主题
- 构建springmvc+dubbo分布式平台-dubbo简介
- 万科集团:掌握采购主动权,实现采购流程精细化管理
- 计算机的所有符号,电脑上怎么打各种符号
- MTK 平台TP 驱动
- 怎样让PHP提示错误信息
- HTML入门学习笔记+详细案例
- 完了,又火一个 。。。
- 用JS来动态设置CSS样式
- 【Love2d从青铜到王者】第十三篇:Love2d之游戏:射击敌人(Game: Shoot the enemy)
- 猿创征文|《Java》关键字大全-小结
- 阿里云负载均衡 SLB CLB 虚拟服务器组配置
- 《精进:如何成为一个很厉害的人》读书笔记
- 【Python】Python之end()关键字使用
热门文章
- 使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器
- CCTextureCache的多线程加载原理和使用
- DevCon.exe (DevCon Command Line Utility)
- java中Collections常用方法总结(包括sort,copy,reverse等)
- 分治法在二叉树遍历中的应用(JAVA)--二叉查找树高度、前序遍历、中序遍历、后序遍
- jQuery教程08-属性筛选选择器
- 正在搜索需要的文件_【数澜发布-澜寻】智能内容搜索引擎,释放“机器阅读” 潜力...
- av linux,AV Linux 新版发布,多少人知道
- eureka注册中心HA集群搭建
- 需求分析三层境界,你到哪层了?