xml模糊查詢語句_2Mybatis學習筆記07:動態SQL語句(原創,轉載請注明來源)

開發環境:

硬件環境:Windows10+JDK 1.8;
軟件環境:Java+Eclipse+Mybatis+maven3.6+tomcat8.0+Postgresql 10.6;
用到的jar包:
asm-3.3.1.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
log4j-api-2.0-rc1.jar
log4j-core-2.0-rc1.jar
mybatis-3.2.7.jar
mybatis-spring-1.2.1.jar
mysql-connector-java-5.1.20.jar
postgresql-42.2.5.jre7.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar

其他:

postgreSQL中已經存在一張表表名use,Windows環境下可通過命令行模式登錄,打開cmd輸入:psql -U postgrese;
按回車鍵,鍵入密碼(當初安裝postgreSQL設置的root密碼);

項目結構:

d533ff458b10b0950b638665147bc5a6.png

1.1 配置文件

創建Mybatis.conf.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="db.properties"/><typeAliases><package name="com.ironxi.entity"/>		</typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /></dataSource></environment></environments><mappers><mapper resource="com/ironxi/entity/TeacherMapper.xml" /></mappers> 
</configuration>

設置數據庫關管理文件:

db.properties

driver=org.postgresql.Driver
url=jdbc:postgresql://localhost:5432/postgres
username=postgres
password=Your.334

1.2 設置MybtisUtils類(編寫sqlsessionfactory,sqlsession)

package com.ironxi.util;import java.io.IOException;
import java.io.InputStream;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MybatisUtil {/**SqlSessionFactory* 通過配置文件創建SqlSessionFactory,是一個SqlSession工廠類*/public static SqlSessionFactory getSqlSessionFactory() throws IOException {String resource = "mybatis.conf.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);return sqlSessionFactory;}/**SqlSession* 通過id找到對應的sql語句并執行它*/public static SqlSession getSession() throws IOException {SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();return sqlSessionFactory.openSession();}
}

1.3 設置Student類,Teacher類

設置User類

package com.ironxi.entity;public class User {private int id;private String name;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", password=" + password + "]";}}

1.4 設置Mapper.xml文件

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ironxi.entity.UserMapper">
<!-- 結果映射不能返回成一個類型時用resultTypt --><select id="getUserByCondition" parameterType="Map" resultType="User">select * from use<where><!-- 利用sql語句的傳參函數模糊匹配 --><if test="name!=null">name like CONCAT('%',#{name},'%')</if></where></select>
</mapper> 

1.5 創建查詢方法

UserDao.java

package com.ironxi.dao;import java.io.IOException;
import java.util.List;
import java.util.Map;import org.apache.ibatis.session.SqlSession;import com.ironxi.entity.User;
import com.ironxi.util.MybatisUtil;public class UserDao {/**search all* @throws IOException */public List<User> getAll(Map<String,Object> map) throws IOException{SqlSession session = MybatisUtil.getSession();List<User> list= session.selectList("com.ironxi.entity.UserMapper.getUserByCondition",map);session.close();return list;}
}

1.6 編寫測試文件

package com.ironxi.test;import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.ironxi.dao.UserDao;
import com.ironxi.entity.User;public class Test {public static void main(String[] args) throws IOException {/** Select */UserDao userDao = new UserDao();Map<String,Object> map=new HashMap<String,Object>();map.put("name", "四");List<User> list=userDao.getAll(map);for(User u:list){System.out.println(u);}System.out.println("************");}
}

輸出結果:

log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
User [id=23, name=四種, password=123455]
User [id=24, name=四狗, password=123455]
************

1.7 動態SQL語句

引入了<where></where>條件語句,同時在里面寫if條件,若有多個if則除第一條語句外其余都需加and;

<where><!-- 利用sql語句的傳參函數模糊匹配 --><if test="name!=null">name like CONCAT('%',#{name},'%')</if>
</where>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446053.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446053.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446053.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硬件密碼組件的硬件結構、作用及實現應用設計

引 言 1 硬件密碼組件的概念 密碼技術是解決信息安全問題的核心技術。要實現信息的保密性、完整性、可控性和不可否認性等安全要求&#xff0c;都離不開密碼技術的運用。在具體的信息安全系統中&#xff0c;密碼技術的運用可以基于軟件密碼組件&#xff08;簡稱為SCM&#xf…

sql倒序查詢語句_SQL丨1.基本查詢語句復習

此為自用查詢語句1.selectSELECT column1,column2 FROM table1;常用的格式慣例&#xff1a;大寫了SELECT和FROM&#xff0c;而將表名和列名小寫&#xff1b;通常在列名中使用下劃線&#xff0c;避免使用空格&#xff1b;在每個語句末尾添加分號&#xff1b;SQL不區分大小寫。2.…

基于區塊鏈的檔案共享 項目啟動

注意事項 已經備份了一個配置fabric的完整ubuntu系統&#xff0c;其需要注意的細節如下1&#xff0c;此鏡像系統需要配置host文件&#xff0c;sudo vim /etc/hosts&#xff0c;添加如下內容127.0.0.1 orderer.example.com peer0.org1.example.com peer1.org1.example.c…

知道一點怎么設直線方程_【初中數學】反比例函數策略(二) ——構造方程法...

【相關閱讀】【初中數學】反比例函數策略之一 ——數形結合反比例函數策略(二)——構造方程法(王 橋)上一次&#xff0c;咱們探討了解決反比例函數的策略一——數形結合&#xff0c;本節課我們繼續反比例函數的策略(二)——構造方程法。構造方程法&#xff0c;在《春季攻勢》第…

音視頻處理 C語言編譯器

命令 gcc/clang -g -O2 -o test test.c -I ... -L ... -lgcc Linux環境下的命令&#xff1b;clang是MAC環境下的執行命令-g 輸出文件中的調試信息-O 對輸出文件進行指令優化-o 輸出文件&#xff0c;可執行文件-I 指定頭文件&#xff0c;大寫的i 從-I 開始 是鏈接內容&#x…

wpf將文字轉化為圖形_將創新轉化為實際應用

Worldsensing是全球公認的物聯網先驅。這家位于西班牙巴塞羅那的技術供應商成立于2008年&#xff0c;為城市和傳統行業提供運營情報。伊格納西維拉霍薩納(IgnasiVilajosana)是公司聯合創始人兼首席執行官。伊格納西擁有西班牙巴塞羅那大學物理學博士學位&#xff0c;還接受過美…

音視頻處理 FFmpeg相關內容介紹 以及八大

FFmpeg的介紹 FFmpeg由Fabrice Bellard于2000年創建&#xff0c;由C和匯編語言進行開發FF -> Fast Forward 快進mpeg -> 標準化組織 Moving Pictures Experts Group使用到FFmpeg的開源項目gstreamer: a framework for streaming mediachromiummpv: Command line video pl…

python開發wince軟件_Wince6.0應用開發:二、模擬器的使用

上一篇我們只是搭建我們的開發平臺&#xff0c;那么下面我們結合之前安裝的Wince6.0模擬器進行簡單的開發&#xff0c;來了解一個操作流程一直寫的東西都是很直白的&#xff0c;(*^__^*) 嘻嘻……一、連接上我們的模擬器1、打開vs2008&#xff0c;選擇工具---->設備仿真器管…

python預測股票價格tushare_用tushare對股票進行簡單分析

用tushare對股票進行簡單分析(僅供交流學習)import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport tushare as ts#使用tushare 獲取每只股票的行情數據df ts.get_k_data(‘600519’,start‘2008-01-01’)print(type(df))df.to_csv(‘600519.csv’)df …

音視頻處理 基礎開發 語言基礎

基礎開發內容 Vim編譯器C語言回顧&#xff0c;重點介紹指針的概念Linux/MAC C語言的編譯和調試Linux/MAC 常用開發工具介紹 Vim編譯器 命令模式 拷貝 刪除 粘貼等&#xff0c;通過i / a 等切換到編輯模式編輯模式 編輯字符&#xff0c;通過ESC進行切換常用命令 創建文件 vim …

python 人氣高的項目_給大家推薦:五個Python小項目,Github上的人氣很高的!

1.深度學習框架 PytorchPyTorch 是一個 Torch7 團隊開源的 Python 優先的深度學習框架&#xff0c;提供兩個高級功能&#xff1a;● 強大的 GPU 加速 Tensor 計算(類似 numpy)● 構建基于 tape 的自動升級系統上的深度神經網絡● 你可以重用你喜歡的 python 包&#xff0c;如 n…

音視頻處理 ffmpeg下載、編譯和安裝

創建文件夾 ffmpeg_sources 存放源文件ffmpeg_build 構建文件并安裝庫bin 存放二進制可執行文件 安裝依賴環境 整體安裝 sudo apt-get update -qq && sudo apt-get -y install \autoconf \automake \build-essential \cmake \git-core…

CLion配置 鼠標滾輪 放大和縮小

操作 點擊File -> Settings點擊Appearance & Behavior -> Keymap在搜索框搜索 font 選擇 Decrease FontSize &#xff0c;右鍵點擊&#xff0c;選擇add Mouse Shortcut&#xff0c;按住ctrl&#xff0c;同時向下滑動滾輪&#xff1b;同理&#xff0c;操作 Increase…

struts2通配符_基于Struts2框架的名片管理系統

本篇博文將分享一款基于Struts2框架的名片管理系統&#xff0c;JSP引擎為Tomcat9.0&#xff0c;數據庫采用的是MySQL5.5&#xff0c;集成開發環境為Eclipse IDE for Java EE Developers。名片管理系統主要包括用戶管理和名片管理功能。用戶功能主要包括&#xff1a;用戶注冊、用…

音視頻處理 Clion搭建ffmpeg開發環境

參考鏈接 Ubuntu 20.04 搭建 CLion FFmpeg 開發環境_TYYJ-洪偉的博客-CSDN博客 安裝CLion 首先到 jetbrains 官網 https://www.jetbrains.com/clion/ 下載 CLion 安裝包 CLion-2021.1.tar.gz使用finalshell和ubuntu之間配置ssh鏈接將Clion-2022.1.tar.gz 使用move移動到 /hom…

python安裝好的界面_手把手教你配置最漂亮的PyCharm界面,Python程序員必備!

高逼格超美的IDE界面&#xff0c;是每個程序員的夢想&#xff01;隨著人工智能/機器學習的興起&#xff0c;Python作為一門“漂亮的語言”&#xff0c;再次獲得廣大程序員的關注。而JetBrains出品的PyCharm無疑是最好用的Python IDE之一。俗話說“工欲善其事&#xff0c;必先利…

音視頻處理 ffmpeg中級開發 H264編碼

開發介紹 libavcodec/avcodec.h常用的數據結構 AVCodec 編碼器結構體AVCodecContext 編碼器上下文AVFrame 解碼后的幀結構體內存的分配和釋放 av_frame_alloc 申請av_frame_free() 釋放avcodec_alloc_context3() 創建編碼器上下文avcodec_free_context() 釋放編碼器上下文解碼…

微信公眾號python人工智能回復_python實現微信機器人: 登錄微信、消息接收、自動回復功能...

安裝wxpypip install -u wxpy登錄微信# 導入模塊from wxpy import *# 初始化機器人&#xff0c;掃碼登陸bot bot()運行以上代碼&#xff0c;會生成一個二維碼&#xff0c;通過圖片掃描二維碼即可登錄微信。如果是在服務器上運行代碼&#xff0c;無法顯示圖片的時候&#xff0c…

音視頻處理 ffmpeg中級開發 視頻轉圖片

操作流程 目的&#xff1a;使用FFmpeg將視頻的每一幀數據轉換為圖片1&#xff0c;打開輸入的多媒體文件&#xff0c;檢索多媒體文件中的流信息2&#xff0c;查找視頻流的索引號&#xff0c;通過索引號獲取數據流&#xff1b;通過解析視頻流中的編碼參數得到解碼器ID&#xff0…

python非阻塞多線程socket_Python實現web服務器之 單進程單線程非阻塞實現并發及其原理...

在Python實現web服務器入門學習多進程、多線程實現并發HTTP服務器中&#xff0c;我們知道可以分別通過多進程、多線程的方式實現并發服務器&#xff0c;那么&#xff0c;是否可以通過單進程單線程的程序實現類似功能呢?實際上&#xff0c;在Python多任務學習分別通過yield關鍵…