mybatis学习笔记四(动态sql)
生活随笔
收集整理的這篇文章主要介紹了
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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: div背景透明内容不透明与0.5PX边框
- 下一篇: OpenSessionInViewFil