当前位置: 首页 > news >正文

中国建设银行行网站上海技术公司做网站

中国建设银行行网站,上海技术公司做网站,教育响应式网站建设,求一个全部用div做的网站之前我们介绍了if,where标签的使用#xff1b;本篇我们需要在if,where标签的基础上介绍如何使用Mybatis提供的choose标签动态生成条件语句。 如果您对if,where标签动态生成条件语句不太了解#xff0c;建议您先进行了解后再阅读本篇#xff0c;可以参考#xff1a; Mybat…之前我们介绍了if,where标签的使用本篇我们需要在if,where标签的基础上介绍如何使用Mybatis提供的choose标签动态生成条件语句。 如果您对if,where标签动态生成条件语句不太了解建议您先进行了解后再阅读本篇可以参考 Mybatis 动态SQL – 使用if,where标签动态生成条件语句https://blog.csdn.net/m1729339749/article/details/132627894 一、数据准备 这里我们直接使用脚本初始化数据库中的数据 -- 如果数据库不存在则创建数据库 CREATE DATABASE IF NOT EXISTS demo DEFAULT CHARSET utf8; -- 切换数据库 USE demo; -- 创建用户表 CREATE TABLE IF NOT EXISTS T_TEACHER(ID INT PRIMARY KEY COMMENT 教师编号,TEACHER_NAME VARCHAR(64) NOT NULL COMMENT 教师名称,DEPARTMENT VARCHAR(16) NOT NULL COMMENT 所属部门,BIRTH DATE NOT NULL COMMENT 出生年月,DEGREE VARCHAR(16) NOT NULL COMMENT 学历(ZK:专科, BK:本科, YJS:研究生, BS:博士) ); -- 插入用户数据 INSERT INTO T_TEACHER(ID, TEACHER_NAME, DEPARTMENT, BIRTH, DEGREE) VALUES(1, 张三1, 001, 1990-06-12, BK),(2, 李四1, 002, 1992-05-10, BK),(3, 张三2, 003, 1988-01-15, YJS),(4, 李四2, 001, 1979-03-10, BK),(5, 李四3, 003, 1995-08-16, YJS);创建了一个名称为demo的数据库并在库里创建了名称为T_TEACHER的教师表并向表中插入了数据 二、环境搭建 1、创建实体类 在cn.horse.demo下创建TeacherInfo实体类 TeacherInfo类 package cn.horse.demo;import java.time.LocalDate;public class TeacherInfo {private Integer id;private String name;private String department;private LocalDate birth;private String degree;Overridepublic String toString() {StringBuilder stringBuilder new StringBuilder();stringBuilder.append({ );stringBuilder.append(id: );stringBuilder.append(this.id);stringBuilder.append(, );stringBuilder.append(name: );stringBuilder.append(this.name);stringBuilder.append(, );stringBuilder.append(department: );stringBuilder.append(this.department);stringBuilder.append(, );stringBuilder.append(birth: );stringBuilder.append(this.birth);stringBuilder.append(, );stringBuilder.append(degree: );stringBuilder.append(this.degree);stringBuilder.append( });return stringBuilder.toString();} }2、Mapper配置文件 在resources的目录下新建TeacherInfoMapper.xml配置文件 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecn.horse.demo.TeacherInfoMapperselect idfindAll parameterTypecn.horse.demo.TeacherInfoQuery resultTypecn.horse.demo.TeacherInfoSELECTID,TEACHER_NAME name,DEPARTMENT,BIRTH,DEGREEFROM T_TEACHERwhereif testnull ! id and ! idAND ID #{id}/ifif testnull ! name and ! nameAND TEACHER_NAME #{name}/ifif testnull ! department and ! departmentAND DEPARTMENT #{department}/ifif testnull ! degree and ! degreeAND DEGREE #{degree}/if/where/select /mapper3、引入配置文件 在resources下新建mybatis-config.xml配置文件并引入TeacherInfoMapper.xml配置文件 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configurationsettingssetting namelogImpl valueJDK_LOGGING//settingsenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver valueorg.gjt.mm.mysql.Driver/property nameurl valuejdbc:mysql://localhost:3306/demo?useUnicodetrueamp;useSSLfalseamp;characterEncodingutf8/property nameusername valueroot/property namepassword valuehorse//dataSource/environment/environmentsmappersmapper resourcedemo/TeacherInfoMapper.xml //mappers /configuration4、会话工具类 在cn.horse.demo包下新建SqlSessionUtils工具类 package cn.horse.demo;import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream; import java.util.Objects;public class SqlSessionUtils {private static final SqlSessionFactory sqlSessionFactory;static {// 读取mybatis配置文件InputStream inputStream ClassLoader.getSystemClassLoader().getResourceAsStream(mybatis-config.xml);// 根据配置创建SqlSession工厂sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);}/*** 开启会话* return*/public static SqlSession openSession() {return sqlSessionFactory.openSession();}/*** 关闭会话* param sqlSession*/public static void closeSession(SqlSession sqlSession) {if(Objects.nonNull(sqlSession)) {sqlSession.close();}} }5、JDK 日志系统配置 在resources的目录下新建logging.properties配置文件 handlersjava.util.logging.ConsoleHandler .levelINFOcn.horse.demo.TeacherInfoMapper.levelFINER java.util.logging.ConsoleHandler.levelALL java.util.logging.ConsoleHandler.formatterjava.util.logging.SimpleFormatter java.util.logging.SimpleFormatter.format%1$tY-%1$tm-%1$td %1$tT.%1$tL %4$s %3$s - %5$s%6$s%n在cn.horse.demo下新建JdkLogConfig类 JdkLogConfig类 package cn.horse.demo;import java.io.IOException; import java.io.InputStream; import java.util.logging.LogManager;public class JdkLogConfig {public JdkLogConfig() {try {InputStream inputStream ClassLoader.getSystemClassLoader().getResourceAsStream(logging.properties);LogManager.getLogManager().readConfiguration(inputStream);} catch (IOException e) {throw new RuntimeException(e);}} }6、启动程序 package cn.horse.demo;import org.apache.ibatis.session.SqlSession;import java.util.List;public class Main {public static void main(String[] args) {// 引入JDK日志配置System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);TeacherInfoQuery teacherInfoQuery new TeacherInfoQuery();teacherInfoQuery.setId(1);teacherInfoQuery.setName(张三1);teacherInfoQuery.setDepartment(001);teacherInfoQuery.setDegree(BK);findAll(cn.horse.demo.TeacherInfoMapper.findAll, teacherInfoQuery);}private static void findAll(String statement, TeacherInfoQuery teacherInfoQuery) {SqlSession sqlSession null;try {sqlSession SqlSessionUtils.openSession();ListTeacherInfo teacherInfoList sqlSession.selectList(statement, teacherInfoQuery);for (TeacherInfo teacherInfo: teacherInfoList) {System.out.println(teacherInfo);}} finally {SqlSessionUtils.closeSession(sqlSession);}} }执行后的结果如下 三、choose标签的使用 在上面的运行结果中我们可以看到执行的SQL语句 SELECT ID, TEACHER_NAME name, DEPARTMENT, BIRTH, DEGREE FROM T_TEACHER WHERE ID ? AND TEACHER_NAME ? AND DEPARTMENT ? AND DEGREE ? 从SQL中我们可以看到条件语句中包含了ID、TEACHER_NAME、DEPARTMENT、DEGREE而在实际的场景中ID是唯一的ID作为条件时其他的条件就显得比较多余显然上面动态生成的条件语句是存在一些问题的下面我们使用choose标签来解决此类问题 select idfindAll parameterTypecn.horse.demo.TeacherInfoQuery resultTypecn.horse.demo.TeacherInfoSELECTID,TEACHER_NAME name,DEPARTMENT,BIRTH,DEGREEFROM T_TEACHERwherechoosewhen testnull ! id and ! idAND ID #{id}/whenotherwiseif testnull ! name and ! nameAND TEACHER_NAME #{name}/ifif testnull ! department and ! departmentAND DEPARTMENT #{department}/ifif testnull ! degree and ! degreeAND DEGREE #{degree}/if/otherwise/choose/where /selectchoose标签标签中可以包含多个when标签、一个otherwise标签 when标签test属性值用作条件判断与if标签的test属性一样when标签可以多次使用 otherwise标签otherwise标签最多只能使用一次并且只能作为choose标签内的最后一个标签。 choose标签类似于Java中的switch语句会依次判断when标签中的条件是否满足直到找到满足条件的when标签并将when标签中的条件语句拼装到SQL语句中并跳出choose标签如果找不到满足条件的when标签则将otherwise标签中的条件语句拼装到SQL语句中并跳出choose标签 1、示例使用ID查询教师 // 引入JDK日志配置 System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);TeacherInfoQuery teacherInfoQuery new TeacherInfoQuery(); teacherInfoQuery.setId(1); teacherInfoQuery.setName(张三1); teacherInfoQuery.setDepartment(001); teacherInfoQuery.setDegree(BK); findAll(cn.horse.demo.TeacherInfoMapper.findAll, teacherInfoQuery);执行后的结果如下 结果分析 choose标签中先判断第一个when标签条件是否满足因为id为1第一个条件满足则将条件AND ID #{id} 拼装到SQL语句中并跳出choose标签所以执行的条件语句中只有ID ? 条件 2、示例使用名称查询教师 // 引入JDK日志配置 System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);TeacherInfoQuery teacherInfoQuery new TeacherInfoQuery(); teacherInfoQuery.setName(张三1); findAll(cn.horse.demo.TeacherInfoMapper.findAll, teacherInfoQuery);执行后的结果如下 结果分析 choose标签中先判断第一个when标签条件是否满足因为id为null第一个条件不满足没有找到满足条件的when标签则将otherwise标签中的条件语句拼装到SQL语句中并跳出choose标签由于这里otherwise标签中的条件语句是动态SQL语句则会执行动态SQL语句执行后的结果AND TEACHER_NAME #{name} 作为otherwise标签的内容所以执行的条件语句中只有TEACHER_NAME ? 条件
http://www.hkea.cn/news/14268449/

相关文章:

  • 建设网站的页面设计dedecms网站的源码如何安装
  • 石家庄网站营销网站可视化设计
  • 自己建设网站需要些什么wordpress comment_form()
  • 做网站的企业app安装器
  • 威海网站建设公司排名网站建设主要问题
  • 聊城手机网站建设服务网站免费推广网站
  • 建设企业管理类网站南通门户网站
  • 做图文的网站怎么将网站关键词排名首页
  • 网站设计基本原则游戏网站风格
  • 做农业需关注什么网站深圳市宝安区区号
  • 电商运营自学网站江西手机网站建设
  • 淘宝客网站需要备案网页小游戏怎么下载
  • 类似wordpress的建站郑州主动营销网站
  • 济宁500元做网站广告公司朋友圈创意宣传
  • 论坛网站模板免费下载uc酷站中的美图网站
  • 网站建设企业文化大学生自学网
  • 龙凤网站建设云聚达公司做网站哪里好
  • 常用的网站建设技术包括网站开发去哪里找
  • 班级网站怎么做网页制作哪些域名商可以自助wordpress
  • 网站变灰色如何创造一款游戏
  • 温州建设银行支行网站网址推广主要做些什么内容
  • 沈阳市建设工程质量检测中心网站php 网站伪静态
  • 建站下载专用网站安徽网站推广系统
  • 福建建设资格执业注册管理中心网站衡阳seo优化报价
  • 营销网站的渠道构成基本包括做微信封面模板下载网站
  • 会小二也是做会议网站的珠海有什么好的网站推广公司
  • 网上下载的网站模板怎么用做时间轴的在线网站
  • 网站建设怎么做帐电子商务网站购物流程图
  • 长沙网站推广智投未来如何推广微商城
  • 深圳网站开发ucreator做网站运营需要注意哪些问题