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

深圳制作网站哪家好怎么建设网站运城

深圳制作网站哪家好,怎么建设网站运城,网站建设 保密,如何查看网站收录情况之前我们介绍了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.w-s-a.com/news/165416/

相关文章:

  • 山西省建设银行网站首页长沙网站建设制作
  • 襄阳市做网站 优帮云百度搜索次数统计
  • 自己做视频直播网站盐城做网站多少钱
  • 买个网站服务器多少钱重庆做的好的房产网站
  • 深圳定制建站网站建设推广关键词怎么设置
  • 宝山网站建设 网站外包修改wordpress版权
  • 建立网站的基本步骤新网站多久会被百度收录
  • 软件设计开发流程图廊坊关键词seo排名方案
  • 南山住房和建设局网站网站被k 多久恢复
  • 阿里买域名 电脑做网站做简历哪个网站好
  • 个人网站免费服务器单页网站的域名
  • 网站设计简单讲解小店怎么做网站
  • 校园网站的意义wordpress去除更新
  • 网站开发用python吗常用的网页开发工具有哪些
  • 北京市住房建设投资建设网站做商城网站要哪些流程
  • seo网站改版杭州建设局官网
  • 物流网站建设策划书泰然建设网站
  • 百度做网站的费用采集发布wordpress
  • 网站运维公司有哪些防录屏网站怎么做
  • 昆明做网站seo的网站制作专业
  • 聊城制作手机网站公司wordpress 头条
  • 商城微网站模板一般电商网站做集群
  • winserver2008上用iis发布网站嵊州网站制作
  • 网站内页权重怎么查辽宁建设工程信息网怎么上传业绩
  • 丰都网站建设价格镇江网站制作费用
  • app手机网站建设黄网站建设定制开发服务
  • 百度网盘app下载徐州优化网站建设
  • 附近网站电脑培训班展台设计方案介绍
  • 河南便宜网站建设价格低上海高端室内设计
  • 保险网站有哪些平台wordpress会员vip购买扩展