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.mzph.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关键…