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

关于公司网站建设/推广软文范例

关于公司网站建设,推广软文范例,上海网站建设费用多少,郑州app开发流程Mybatis的综合案例-学生信息查询系统 需求一:当用户输入的学生姓名不为空,则只根据学生信息进行查询; 当用户输入的学生姓名为空,且专业不为空,那么就根据学生专业进行学生的查询 需求二:查询所有id值小于5的学生信息…

Mybatis的综合案例-学生信息查询系统

需求一:当用户输入的学生姓名不为空,则只根据学生信息进行查询;
当用户输入的学生姓名为空,且专业不为空,那么就根据学生专业进行学生的查询

需求二:查询所有id值小于5的学生信息


1.搭建项目环境:

​ 往pom中写入依赖引入,引入我们所需要的各个架包:Mybatis3.5.2、Mysql8.0、Junit4.12、log4j1.2.17、(若是无法使用maven方式导入的话,我会带上项目需要的所有离线jar架包,可以自行导入到自己项目的lib下进行安装)

<!--pom.xml--><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!--   	        <scope>test</scope>--><scope>compile</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>

2.数据库准备

​ 我们这次的项目是学生信息查询系统,因此我们需要准备名为:studentinfoselectsystem的数据库(也可缩写为studentiss,命名规则:项目名称要全小写),其中的表为:dm_student

​ SQL语句如下(若是不能使用,也可以在文章头下载数据库文件sql):

Create table dm_student(
id int(32) PRIMARY KEY AUTO_INCREMENT,
name varchar(50),
major varchar(50),
sno varchar(16)
);insert into dm_student VALUES('1','Stevedash','数学','100');
insert into dm_student VALUES('2','Steve','语文','100');
insert into dm_student VALUES('3','Kdash','英语','100');
insert into dm_student VALUES('4','wgd','数学','80');
insert into dm_student VALUES('5','dxm','语文','90');
insert into dm_student VALUES('6','god','英语','60');

3.配置文件准备

​ 准备好所有的配置文件:mybatis-config.xml(mybatis的核心配置文件)、db.properties(jdbc链接数据库配置文件)、log4j.propertie(log4j日志导出配置文件)

在这里插入图片描述

具体代码如下:

mybatis-config.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"/><!-- 设置别名为pojo--><typeAliases><package name="pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><!-- 数据库连接相关配置 ,db.properties文件中的内容--><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><!-- mapping文件路径配置 --><mappers><mapper resource="mapper/StudentMapper.xml"/></mappers>
</configuration>
db.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/studentinfoselectsystem?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
username=root
password=root
log4j.propertie
###\u6839logger\u8BBE\u7F6E###
log4j.rootLogger = debug,console,file### 
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.Threshold = DEBUG 
log4j.logger.java.sql.Statement=debug 
log4j.appender.console.layout.ConversionPattern = [%p] %d %c - %m%n###
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
###
log4j.appender.file.File = D:/log/web.log
log4j.appender.file.Append = true
log4j.appender.file.Threshold = warn 
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = [%p] %d %c - %m%n

4.编写pojo类

​ pojo(普通java对象),创建出持久化类Student与数据库dm_student进行映射关联,要在类中声明好变量和数据库表中的字段一一对应,并且生成getter和setter方法。

Student.java具体代码如下:
package pojo;public class Student {private int id;//对应数据库字段idprivate String name;//姓名 对应数据库字段nameprivate String major;//专业 对应数据库字段majorprivate String sno;学号 对应数据库字段sno//生成getter和setter方法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 getMajor() {return major;}public void setMajor(String major) {this.major = major;}public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}/*重写toString()方法,让其变成输出我们想要的信息,方便我们检查测试功能需求是否满足*/@Overridepublic String toString(){return "Student{"+"id="+id+",name="+name+",major="+major+",sno="+sno+"}";}
}

5.编写StudentMapper.xml

​ 在resources新建一个package:mapper,在mapper 包下新建一个StudentMapper.xml。

①StudentMapper.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="mapper.StudentMapper"><select id="selectStudentByNameOrMajor" parameterType="Student" resultType="Student">select * from dm_student where 1=1<choose><when test="name!=null and name!=''">and name=#{name}</when><when test="major!=null and major!=''">and major=#{major}</when><otherwise>and  sno is not null</otherwise></choose></select><select id="selectAllIdSmallThanNumber" parameterType="int" resultType="Student">SELECT * FROM dm_student WHERE id IN<foreach item="id" collection="list" open="(" separator="," close=")">#{id}</foreach></select><insert id="addStudent" parameterType="Student">insert into dm_student(id,name,marjor,sno) values(#{id},#{name},#{marjor},#{sno})</insert><delete id="deleteStudent" parameterType="Student">delete from dm_student where id = #{id}</delete><select id="getStudentByList" resultType="Student">select * from dm_student where id in<foreach collection="list" item="id" open="(" separator="," close=")">#{id}</foreach></select><select id="selectByIdLessThan" parameterType="int" resultType="Student">SELECT * FROM dm_student WHERE id &lt; #{id}</select></mapper>
②编写测试类StudentTest.java
package Test;import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.jupiter.api.Test;
import pojo.Student;
import utils.MyBatisUtil;import java.util.ArrayList;
import java.util.List;class StudentTest {private Logger logger= Logger.getLogger(StudentTest.class);/*当用户输入的学生姓名不为空,则只根据学生信息进行查询;当用户输入的学生姓名为空,且专业不为空,那么就根据学生专业进行学生的查询*/@Testvoid selectByNameOrMajor() {SqlSession session= MyBatisUtil.createSqlSession();Student student=new Student();//student.setName("SteveDash");//student.setMajor("数学");List<Student> list=session.selectList("selectStudentByNameOrMajor",student);for (Student student1:list){logger.info(student1.toString());}}/*查询所有id值小于5的学生信息*/@Testvoid selectAllIdSmallThanNumber() {SqlSession session= MyBatisUtil.createSqlSession();List<Integer> intList=new ArrayList<Integer>();for(int i=1;i<5;i++){intList.add(i);}List<Student> list=session.selectList("selectAllIdSmallThanNumber",intList);for (Student student1:list){logger.info(student1.toString());}}/*查询所有id值小于number的学生信息*/@Testvoid selectAllIdNumber() {SqlSession session= MyBatisUtil.createSqlSession();List<Student> list=session.selectList("selectByIdLessThan",5);for (Student student1:list){logger.info(student1.toString());}}
}

反思:需求二是不是可以更改成自己想输入那个数字就输入哪个数字去查询小于该数字的学生信息?

那么最简单的编写SQl语句就是这个了吧?

在这里插入图片描述

但是你会发现,不可以 <报错了,是因为它识别不出来,所以我们得用其他字符来替代

<select id="selectByIdLessThan" parameterType="int" resultType="Student">SELECT * FROM dm_student WHERE id &lt; #{id}</select>

解释一下这串代码:

  1. <select> 元素:这是 MyBatis 中用于定义查询语句的标签。通过 id 属性指定查询语句的唯一标识符,parameterType 属性指定查询语句的输入参数类型,resultType 属性指定查询结果的返回类型。
  2. id 属性:指定查询语句的唯一标识符,可以在 Java 代码中通过这个标识符来调用对应的查询语句。
  3. parameterType 属性:指定查询语句的输入参数类型,我们指定为 int,表示我们将传入一个 int 类型的参数。
  4. resultType 属性:指定查询结果的返回类型,我们指定为 Student,表示查询结果将被映射为 Student 类型的对象。
  5. SQL 查询语句:SELECT * FROM dm_student WHERE id < #{id}。这是实际的 SQL 查询语句。其中,SELECT * FROM dm_student 表示从名为 dm_student 的表中查询所有列的数据。WHERE id < #{id} 表示筛选条件,只查询满足 id 小于传入的参数的记录
  6. &lt;:这是 HTML 实体编码,表示小于符号 <。在 XML 中,< 有特殊的含义,因此需要使用实体编码表示。
  7. #{id}:这是 MyBatis 的参数占位符,会在查询执行时被实际的参数值替代。在这个例子中,#{id} 表示传入的 int 类型的参数值。

作者:Stevedash

发表于:2023年8月23日 16点28分

注:本文内容基于个人学习理解,如有错误或疏漏,欢迎指正。感谢阅读!如果觉得有帮助,请点赞和分享。

相关文章:

Mybatis的综合案例-学生信息查询系统 用于校验是否真正学习掌握了动态SQL

Mybatis的综合案例-学生信息查询系统 需求一&#xff1a;当用户输入的学生姓名不为空&#xff0c;则只根据学生信息进行查询; 当用户输入的学生姓名为空&#xff0c;且专业不为空&#xff0c;那么就根据学生专业进行学生的查询 需求二&#xff1a;查询所有id值小于5的学生信息…...

力扣:70. 爬楼梯(Python3)

题目&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客…...

陕西广电 HG6341C FiberHome烽火 光猫获取超级密码 改桥接模式 提升网速

光猫默认的路由模式实测在100M宽带下只能跑到60M左右&#xff0c;只有改成桥接模式才能跑满&#xff0c;不损失性能。但是改桥接需要给运营商打电话&#xff0c;有的时候不想麻烦他们&#xff0c;这时获取超级密码进行更改就是一个不错的选择了 分析 之前写了一篇HGU B2 光猫的…...

无涯教程-PHP - 移除的扩展

以下扩展已从PHP 7开始删除- eregmssqlmysqlsybase_ct 以下SAPI已从PHP 7开始删除- aolserverapacheapache_hooksapache2filtercaudiumcontinuityisapimilternsapiphttpdpi3webroxenthttpdtuxwebjames PHP - 移除的扩展 - 无涯教程网无涯教程网提供以下扩展已从PHP 7开始删除…...

笔记:transformer系列

1、和其他网络的比较 自注意力机制适合处理长文本&#xff0c;并行度好&#xff0c;在GPU上&#xff0c;CNN和Self-attention性能差不多&#xff0c;在TPU&#xff08;Tensor Processing Uni&#xff09;效果更好。 总结&#xff1a; 自注意力池化层将当做key,value,query来…...

Mysql socket连接测试

配置如下&#xff1a; socket /data/mysql/data/mysql.sock //套接字文件 在数据库没有任何连接的情况下&#xff0c;可以看到3306端口和socket端口都在监听 [mysqlt3-dtpoc-dtpoc-web04 bin]$ netstat -an | grep -i 3306 tcp 0 0 0.0.0.0:3306 0.…...

探究分布式操作系统的本质

探究分布式操作系统的本质 有一位网友问&#xff0c;分布式操作系统的本质是什么&#xff0c;今天就来说说这个话题。 首先&#xff0c;我们需要明确什么是分布式操作系统。 从大范围来理解&#xff0c;分布式操作系统是传统单机操作系统的延伸&#xff0c;可以看作是在多台独…...

opencv-dnn

# utils_words.txt 标签文件 import osimage_types (".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff")def list_images(basePath, containsNone):# return the set of files that are validreturn list_file…...

如何选择合适的开源许可证?

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

【前端】深入解析CSS:选择器、显示模式、背景属性和特征剖析

目录 一、前言二、CSS的复合选择器1、后代选择器①、语法②、注意事项 2、子选择器①、语法②、注意事项 3、并集选择器①、语法②、注意事项 4、链接伪类选择器①、语法②、注意事项 三、CSS元素显示模式转换1、转换为块元素display:block2、转换为行内元素display:inline3、转…...

算法训练营第三十四天(8.23)| 动态规划Part04:01背包

目录 Leecode 1049.最后一块石头的重量II Leecode 494.目标和 Leecode 474.一和零 Leecode 1049.最后一块石头的重量II 题目地址&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目类型&#xff1a;01背包 class Solution { public:int…...

【python】tkinter使用多进程打包成exe后multiprocessing无法关闭对应进程

这是由于multiprocessing模块在Windows操作系统下使用fork方法创建子进程时会导致打包成exe后无法正常运行的问题。 可以尝试使用freeze_support函数来解决这个问题。freeze_support函数是在Windows操作系统下用于支持multiprocessing模块的函数。 下面是一个示例代码&#x…...

Redis工具类(缓存操作,Object转换成JSON数据)

依赖spring-data-redis-2.4.1.jar Component Data public class RedisUtils {Autowiredprivate RedisTemplate<String, Object> redisTemplate;Resource(name "stringRedisTemplate")private ValueOperations<String, String> valueOperations;/*** 默…...

Linux 下 Java Socket 编程报 java.net.Exception:Permission denied (权限不足)

本人用Linux部署springboot项目时遇见这个错误&#xff0c;原因很简单&#xff0c;就是端口号没有选对。 在linux系统中&#xff0c;端口号再1024以下的需要root权限&#xff0c;只要把端口改成大于1024的就可以了&#xff0c;但避开一些软件的默认端口&#xff0c;如Tomcat的8…...

IDEA项目实践——VUE介绍与案例分析

系列文章目录 IDEA项目实践——JavaWeb简介以及Servlet编程实战 IDEA项目实践——Spring集成mybatis、spring当中的事务 IDEA项目实践——Spring当中的切面AOP IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——Spring框架简介&#xff0c;以及IOC注解 I…...

vue-canvas基本使用和注意事项-动画闪烁效果-自适应适配不同分辨率问题

前言 canvas画布是html的新特性&#xff0c;熟悉画布我们可以完成很多拖拽&#xff0c;标注&#xff0c;动画的功能 使用canvas实现一个小例子很容易&#xff0c;但是真正在项目中使用时&#xff0c;我们需要注意的地方有很多 canvas基本原理就是它基于渲染方法&#xff0c;根…...

Jmeter 如何才能做好接口测试?

现在对测试人员的要求越来越高&#xff0c;不仅仅要做好功能测试&#xff0c;对接口测试的需求也越来越多&#xff01; 所以也越来越多的同学问&#xff0c;怎样才能做好接口测试&#xff1f; 要真正的做好接口测试&#xff0c;并且弄懂如何测试接口&#xff0c;需要从如下几…...

电商平台京东平台获得京东商品描述API接口演示案例

京东商品描述API接口可以获取京东商品描述&#xff1a; 详细介绍商品的特点和功能,让消费者能够了解商品的具体用途和效果。 使用简洁明了的语言,避免使用过于专业的术语和长句子,让消费者能够轻松理解。 重点突出商品的卖点和优势,让消费者能够更加清晰地了解商品的价值 …...

《算法竞赛·快冲300题》每日一题:“单位转换”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 单…...

R语言13-R语言中的数据导入导出和批量导入

数据导入 CSV 文件&#xff1a; 使用 read.csv() 函数导入逗号分隔的文本文件。 data <- read.csv("data.csv")Excel 文件&#xff1a; 使用 readxl 包中的函数 read_excel() 导入 Excel 文件。 install.packages("readxl") # 安装 readxl 包&#…...

【Java】对象与类

【Java】对象与类 文章目录 【Java】对象与类1、学习背景2、定义&使用2.1 创建类2.2 创建对象 3、static关键字3.1 修饰变量3.2 修饰方法3.3 修饰代码块3.4 修饰内部类 4、this关键字5、封装特性5.1 访问修饰符5.2 包的概念 6、构造方法7、代码块7.1 普通代码块7.2 成员代码…...

视频尺寸缩小,一键批量剪辑,轻松制作精简版

大家好&#xff01;在视频剪辑中&#xff0c;有时我们需要将大尺寸的视频缩小&#xff0c;以适应特定的需求和平台要求。为了帮助您轻松制作精简版视频&#xff0c;我们推出了一款全新的工具——视频尺寸缩小批量剪辑软件&#xff01;让您一键批量将视频尺寸缩小&#xff0c;轻…...

leetcode做题笔记94. 二叉树的中序遍历

给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 思路一&#xff1a;模拟题意 void inorder(struct TreeNode*root,int* ans,int *resSize) {if(!root){return ;}inorder(root->left,ans,resSize);ans[(*resSize)] root->val;inorder(root->right…...

UWB高精度人员定位系统源码,微服务+java+ spring boot+ vue+ mysql技术开发

工业物联网感知预警体系&#xff0c;大中小企业工业数字化转型需求的工业互联网平台 工厂人员定位系统是指能够对工厂中的人员、车辆、设备等进行定位&#xff0c;实现对人员和车辆的实时监控与调度的系统&#xff0c;是智慧工厂建设中必不可少的一环。由于工厂的工作环境比较…...

企业党建杂志企业党建杂志社企业党建编辑部2023年第4期目录

卷首语 坚持学思用贯通 知信行统一 (0001) 赵荣地 国企与国资《企业党建》投稿&#xff1a;cn7kantougao163.com 深入推进新时代党的建设的重大部署 (0004) 陈锋 国有企业推进中国式现代化建设的使命任务和实践路径 (0006) 蒋雪群 创新与实践 浅析国企党建与生产经营工作…...

ChatGPT + Flutter快速开发多端聊天机器人App

下载地址&#xff1a;ChatGPT Flutter快速开发多端聊天机器人App 下载地址&#xff1a;ChatGPT Flutter快速开发多端聊天机器人App...

ubuntu18.04复现yolo v8之最终章,realsenseD435i+yolo v8完美运行

背景&#xff1a;上一篇博客我们已经为复现yolov8配置好了环境&#xff0c;如果前面的工作顺利进行&#xff0c;我们已经完成了90%&#xff08;学习类程序最难的是环境配置&#xff09;。 接下来将正式下载yolov8的相关代码&#xff0c;以及进行realsenseD435i相机yolo v8的de…...

Python统计中文词频的四种方法

统计中文词频是Python考试中常见的操作&#xff0c;由于考察内容较多&#xff0c;因此比较麻烦&#xff0c;那么有没有好的方法来实现呢&#xff1f;今天&#xff0c;我们总结了四种常见的中文词频统计方法&#xff0c;并列出代码&#xff0c;供大家学习参考。 中文词频统计主…...

sql server 快速安装

目录标题 一、下载二、直接选择基本安装二、下载ssms&#xff08;数据库图形化操作页面&#xff09;三、开启sa账号认证&#xff08;一&#xff09;第一步&#xff1a;更改身份验证模式&#xff08;二&#xff09;第二步&#xff1a;启用 sa 登录四、开启tcp/ip 一、下载 下载…...

机器学习之损失函数

深度学习中常用的损失函数多种多样&#xff0c;具体选择取决于任务类型和问题的性质。以下是一些常见的深度学习任务和相应的常用损失函数&#xff1a; 分类任务&#xff1a; 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;&#xff1a;用于二分类和多类别分类任务…...