2024/7/7总结

Servlet

@WebServlet("/demo2")
public class servlet_demo2 extends HttpServlet {/*** 就绪/服务方法(处理请求数据)* 系统方法,服务器自动调用* 当有请求到达servlet时,就会调用该方法* 方法可以被多次调用* @param req* @param resp* @throws ServletException* @throws IOException*/@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("被调用了");}/*** 销毁方法* 系统方法,服务器自动调用* 当服务器关闭或应用程序停止时,调用该方法* 方法只会执行一次*/@Overridepublic void destroy() {System.out.println("Servlet被销毁了");}/*** 初始化方法,系统方法服务器自动调用* 当请求到达Servlet容器时,Servlet容器会判断Servlet对象是否存在,如果不存在则创建实例并初始化* 方法只会执行一次* @throws ServletException*/@Overridepublic void init() throws ServletException {System.out.println("被创建了");}
}

HttpServletRequest

 HttpServltResponse:

MyBatis: 

接口:

package servlet.mapper;import org.apache.ibatis.annotations.Param;
import servlet.pojo.testdemo1;import java.util.List;public interface UserMapper {//查找所有List<testdemo1> selectAll();        //唯一id//很多个就用集合,单个的就不用//查找单独testdemo1 selectById(int id);//条件查询/*参数接收1.散装参数2.对象参数3.map集合参数*///散装参数:List<testdemo1> selectmany (@Param("id")int id,@Param("username")String username,@Param("password")String password);//param里的字符串要和#{}里面的一样//动态查找List<testdemo1> selectmany_dynamic (@Param("id")int id,@Param("username")String username,@Param("password")String password);//单条件动态查询List<testdemo1> Single_condition_dynamic (@Param("id")int id,@Param("username")String username,@Param("password")String password);//添加void add(testdemo1 testdemo);//修改    可以返回void也可以返回int,返回int就是返回影响的行数int update(testdemo1 testdemo);void delete(int id);void batch_delete(@Param("ids")int [] ids);
}

实现类:

package servlet.mybatis_test;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import servlet.mapper.UserMapper;
import servlet.pojo.testdemo1;import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*mybatis 增删改查*/
public class testdemo4 {public static void main(String[] args) throws IOException {//1.加载mybatis的核心配置文件,获取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sql(可以在这里设置自动提交事务)SqlSession sqlSession = sqlSessionFactory.openSession(true);//3.获取UserMapper接口的代理对象UserMapper usermapper = sqlSession.getMapper(UserMapper.class);//查看所有List<testdemo1> users = usermapper.selectAll();System.out.println("这是查询所有:");System.out.println(users);System.out.println();//查看单独int ids = 1;testdemo1 selectById = usermapper.selectById(ids);System.out.println("这是查询单独:");System.out.println(selectById);System.out.println();//条件查询:散装int id2 = 3;String username = "王";String password = "412";//处理参数(因为username是模糊查询)username = "%" + username + "%";List<testdemo1> selectmany = usermapper.selectmany(id2, username, password);System.out.println("这是多条件和模糊查找");System.out.println(selectmany);System.out.println();//动态查询:int id3 = 3;String username3 = "";String password3 = null;//处理参数(因为username是模糊查询)username3 = "%" + username3 + "%";List<testdemo1> selectmany_dynamic = usermapper.selectmany_dynamic(id3, username3, password3);System.out.println("动态查询");System.out.println(selectmany_dynamic);System.out.println();//单条件动态查询:(只要有一个匹配了东西下面的就不会做了)//这个的用处是一个下拉项可能有几个固定选项,从固定选项里面选int id4 = 1;String username4 = "cascaca";String password4 = "djijdadqajdif";//处理参数(因为username是模糊查询)username4 = "%" + username4 + "%";List<testdemo1> single_condition_dynamic = usermapper.Single_condition_dynamic(id4, username4, password4);System.out.println("单条件动态查询");System.out.println(single_condition_dynamic);System.out.println();String username5 = "赵六";String password5 = "23223232";String gender = "男";String addr = "广东";testdemo1 testdemo = new testdemo1();testdemo.setAddr(addr);testdemo.setGender(gender);testdemo.setUsername(username5);testdemo.setPassword(password5);System.out.println("新增数据:");usermapper.add(testdemo);//获取主键必须要给useGeneratedKeys="true" keyProperty="id"Integer id = testdemo.getId();System.out.println(id);/*提交事务:没有的话数据库不会出来新增的数据*//*sqlSession.commit();*/   /*上面开启了自动提交事务所以就不用再写了*//*修改*/int id6=5;String username6 = "七七";String password6 = "52253";String gender6 = "女";String addr6 = "重庆";testdemo1 demo2 = new testdemo1();demo2.setAddr(addr6);demo2.setGender(gender6);demo2.setUsername(username6);demo2.setPassword(password6);demo2.setId(id6);System.out.println("修改成功,受影响的行数:");int count = usermapper.update(demo2);System.out.println(count);/*删除*/int id7=7;System.out.println("删除成功");usermapper.delete(id7);//批量删除/*int[] ids_={6,8};System.out.println("批量删除成功");usermapper.batch_delete(ids_);*///4.释放资源sqlSession.close();}
}

 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"><!--namespace:名称空间
-->
<mapper namespace="servlet.mapper.UserMapper"><!-- 这里写增删改查的--><!--id是语句的唯一标识,resultTyle是返回结果的类型--><select id="selectAll" resultType="testdemo1">    /*用了别名所以resultTyle默认就是去servlet.pojo下去看*/select * from test1 ;</select><!--参数占位符1.#{}:会替换成? 2.${}:直接拼sql 会存在sql注入的问题 --><!--注意:sql语句中如果两个比大小要用到小于号(<)时,不能直接写1.转义字符:直接用&lt;代替<号--><select id="selectById" resultType="testdemo1">select * from test1 where id=#{id};</select><select id="selectmany" resultType="testdemo1">select *from test1whereid =#{id}and username like #{username}  <!--有like的是模糊查找,比如这里输入华为,那么华为有限公司就可以被找到--><!--注意模糊查找不用=号-->and password =#{password}</select><select id="selectmany_dynamic" resultType="testdemo1">select *from test1where 1 = 1     <!--这里有个恒等式,因为如果id为空的时候 ,where后面就直接接and了,第二种可以直接用where标签括起来,idea会自动识别--><if test="id != null" >and id =#{id}</if><if test="username!= null and username!= '' ">and username like #{username}  <!--有like的是模糊查找,比如这里输入华为,那么华为有限公司就可以被找到--><!--注意模糊查找不用=号--></if><if test="password !=null and password !='' ">and password =#{password}</if></select><select id="Single_condition_dynamic" resultType="testdemo1">select *from test1<where><choose><!--相当于switch--><when test="id != null">    <!--相当于case-->id =#{id}</when><when test="username!= null and username!= ''">    <!--相当于case-->username like #{username}</when><when test="password !=null and password !=''">    <!--相当于case-->password =#{password}</when><otherwise>        /*这是防止用户一个也不选的情况会报错*/1 = 1           /*如果上面的一个也没选才会做这个*//*但其实我这个用where标签包起来了,其实不写这个也不会报错*/</otherwise></choose></where></select><insert id="add" useGeneratedKeys="true" keyProperty="id">insert into test1(username,password,gender,addr)value (#{username},#{password},#{gender},#{addr})</insert><update id="update">update test1set username = #{username},password = #{password},gender = #{gender},addr = #{addr}where id = #{id};</update><delete id="delete">delete from test1 where  id = #{id};</delete><delete id="batch_delete"><!--mybatis会将数组参数,封装成一个Map集合*默认 array=数组*使用@param注解改变map集合的默认key的名称-->delete from test1where id in(<foreach collection="ids" item="id" separator=",">    /*因为现在是不确定有几个id要删除所以要这样写*/#{id}</foreach>)</delete></mapper>

 

 

 

 

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/371810.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS多target时怎么对InfoPlist进行国际化

由于不同target要显示不同的App名称、不同的权限提示语&#xff0c;国际化InfoPlist文件必须创建名称为InfoPlist.strings的文件&#xff0c;那么多个target时怎么进行国际化呢&#xff1f;步骤如下&#xff1a; 一、首先我们在项目根目录创建不同的文件夹对应多个不同的targe…

多方SQL计算场景下,如何达成双方共识,确认多方计算作业的安全性

安全多方计算在SQL场景下的限制 随着MPC、隐私计算等概念的流行&#xff0c; 诸多政府机构、金融企业开始考虑参与到多方计算的场景中&#xff0c; 扩展数据的应用价值。 以下面这个场景为例&#xff0c; 银行可能希望获取水电局和税务局的数据&#xff0c;来综合计算得到各…

基于FPGA的图像边缘检测(OV5640)

一、简介 1.应用范围 边缘主要存在于图像中目标与目标之间&#xff0c;目标与背景之间&#xff0c;区域与区域之间。 边缘检测的目的就是找到图像中亮度变化剧烈的像素点构成的集合&#xff0c;表现出来往往是轮廓。如果图像中边缘能够精确的测量和定位&#xff0c;那么&…

移动校园(2):express构建服务器,小程序调用接口,展示数据

express做服务器框架&#xff0c;mssql连接数据库&#xff0c;uni-request调用接口 这是文件夹目录 然后是index.js内容 const expressrequire(express) const appexpress() const uniRouterrequire("./uniRouter") const config{user:sa,password:123456,server:l…

数据结构--二叉树相关例题4

运用到malloc函数&#xff0c;因为之前忘记它的使用方法&#xff0c;因此附加一个 动态内存管理&#xff08;前面内容中有讲解过&#xff09;的知识点 1.二叉树遍历 //二叉树遍历 //属于IO类型题有输入有输出//因为输入包括1行字符串&#xff0c;长度不超过100&#xff0c;所以…

华为eNSP:HCIA汇总实验

本次拓扑实验需求&#xff1a; 1、内网地址用DHCP 2、VLAN10不能访问外网 3、使用静态NAT 实验用到的技术有DHCP、划分VLAN、IP配置、VLAN间的通信&#xff1a;单臂路由、VLANIF&#xff0c;静态NAT、基本ACL DHCP是一种用于自动分配IP地址和其他网络参数的协议。 划分VLA…

【Spring Boot】关系映射开发(二):一对多映射

《JPA 从入门到精通》系列包含以下文章&#xff1a; Java 持久层 API&#xff1a;JPA认识 JPA 的接口JPA 的查询方式基于 JPA 开发的文章管理系统&#xff08;CRUD&#xff09;关系映射开发&#xff08;一&#xff09;&#xff1a;一对一映射关系映射开发&#xff08;二&#…

在CenteOs7上安装mysql8.0(Super详细版)

在CenteOs7上安装mysql8.0 为什么用Mysql8.0&#xff1f;如何下载下载地址需要提前准备下载步骤 服务器上安装如何上传到服务器&#xff1f;通过wget下载到服务器并解压 开始安装非必须安装如果全部安装执行顺序 安装完后&#xff0c;启动mysql使用“systemctl”检测mysqld服务…

【K8s】专题六(5):Kubernetes 稳定性之重启策略、滚动更新策略

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、重启策略 1、基本介绍 2、资源清单&#xff08;示例&#xff09; 二、滚动更新策略 …

申请EV代码签名证书费用是多少?

代码签名证书是确保软件安全性和可信度的关键工具&#xff0c;在软件开发领域扮演着至关重要的角色。EV代码签名证书&#xff0c;即扩展验证代码签名证书&#xff0c;以其最高级别的安全性和信任度&#xff0c;成为大型企业或对安全性要求较高的软件的首选。本文旨在深入探讨EV…

可灵AI快速迭代:揭示中国AI技术的全球领先地位

最近&#xff0c;中国企业在AI技术上的快速迭代引起了广泛关注。以可灵AI为例&#xff0c;一个月内连续三次升级&#xff0c;推出了高清版和首尾帧控制等功能。这种高频率的技术更新&#xff0c;不仅显示了中国企业的拼劲&#xff0c;也对全球AI竞赛产生了深远影响。 中国企业的…

UGC与AI引领的下一个10年,丝芭传媒已经准备好

丝芭传媒最近传来的消息&#xff0c;都跟技术相关。 基于自研AI大模型“Paro&#xff08;心乐舞河&#xff09;”的AIGPT及AIGC生成工具APP“鹦鹉人”开启用户内测。2023年3月技术测试的图形化智能社交基座“美踏元宇宙”&#xff0c;也将开放首轮用户内测。 此外&#xff0c…

【分布式技术】——监控平台zabbix 介绍与部署

一、监控系统的相关知识 1.监控系统运用的原因 当我们需要实时关注与其相关的各项指标是否正常&#xff0c;往往存在着很多的服务器、网络设备等硬件资源&#xff0c;如果我们想要能够更加方便的、集中的监控他们&#xff0c;zabix可以实现集中监控管理的应用程序 监控的初衷…

Python3极简教程(一小时学完)中

异常 在这个实验我们学习 Python 的异常以及如何在你的代码中处理它们。 知识点 NameErrorTypeError异常处理&#xff08;try..except&#xff09;异常抛出&#xff08;raise&#xff09;finally 子句 异常 在程序执行过程中发生的任何错误都是异常。每个异常显示一些相关…

LabVIEW光谱测试系统

在现代光通信系统中&#xff0c;光谱分析是不可或缺的工具。开发了一种基于LabVIEW的高分辨率光谱测试系统&#xff0c;通过对可调谐激光器、可编程光滤波器和数据采集系统的控制&#xff0c;实现了高效、高精度的光谱测量。 项目背景 随着光通信技术的迅速发展&#xff0c;对…

《C++20设计模式》命令模式思考

文章目录 一、前言二、分析 拆解1、经典命令模式2、撤销操作3、关于Invoker类 三、实现 一、前言 哎&#xff01;只要是书上写的和经典设计模式不同&#xff0c;我就会很伤脑筋。&#x1f629; 命令模式到底是干什么的&#xff1f; 答&#xff1a;命令的发送者和接收者完全解…

VMware Workstation桥接模式无法上网

问题背景 我之前创建过一个虚拟机&#xff0c;当时虚拟机的网络模式使用的是桥接模式&#xff0c;配置好了固定ip地址&#xff0c;是可以正常上网的&#xff0c;中间没有做任何网络上面的配置。但是今天再打开这台虚拟机时&#xff0c;发现竟然不能上网了。 物理主机的ip信息配…

数据库课设---酒店管理系统(MySQL、VBNet)

目录 一. 知识技术 二. 需求分析 2.1 功能需求 2.2 数据需求 三. 数据流图与数据字典 3.1 数据流图 3.1.1 业务流图 3.1.2 数据流图 3.1.3 关系图 3.2 数据字典 四. 数据库设计 4.1 概念模型设计 4.2 逻辑模型设计 4.3 数据库实现 …

MATLAB——循环语句

一、for end语句 在该语法中&#xff0c;循环变量是用于迭代的变量名&#xff0c;它会在每次循环迭代中从向量或矩阵中取出一列的值。数值向量或者矩阵则表示了循环变量可以取值的范围&#xff0c;通常根据实际需要事先给定。一旦循环变量遍历完数值向量或者矩阵中的所有值&…

NAT:地址转换技术

为什么会引入NAT&#xff1f; NAT&#xff08;网络地址转换&#xff09;的引入主要是为了解决两个问题 IPv4地址短缺&#xff1a;互联网快速发展&#xff0c;可用的公网IP地址越来越少。网络安全&#xff1a;需要一种方法来保护内部网络不被直接暴露在互联网上。 IPv4 &…