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

网站建设需求确定wordpress cms社交

网站建设需求确定,wordpress cms社交,中山企业网络推广方案,帝国网站调用图片集1. 什么是MyBatis#xff1f; 简单说#xff0c;MyBatis就是一个完成程序与数据库交互的工具#xff0c;也就是更简单的操作和读取数据库的工具。 2. 怎么学习Mybatis Mybatis学习只分为两部分#xff1a; 配置MyBatis开发环境使用MyBatis模式和语法操作数据库 3. 第一…1. 什么是MyBatis 简单说MyBatis就是一个完成程序与数据库交互的工具也就是更简单的操作和读取数据库的工具。 2. 怎么学习Mybatis Mybatis学习只分为两部分 配置MyBatis开发环境使用MyBatis模式和语法操作数据库 3. 第一个MyBatis查询 开始搭建MyBatis之前我们先来看一下MyBatis在整个框架的定位框架交互流程图 MyBatis也是一个ORM框架ORMObject Relational Mappping即对象关系映射。在面向对象编程语言中将关系型数据库与对象建立起映射关系进而自动完成数据与对象的相互转换 将输入数据SQL映射成原生的SQL将结构及映射为返回对象即输出对象 3.1 创建数据库和表 -- 创建数据库 drop database if exists mycnblog; create database mycnblog DEFAULT CHARACTER SET utf8mb4;-- 使用数据数据 use mycnblog;-- 创建表[用户表] drop table if exists userinfo; create table userinfo(id int primary key auto_increment,username varchar(100) not null,password varchar(32) not null,photo varchar(500) default ,createtime timestamp default current_timestamp,updatetime timestamp default current_timestamp,state int default 1 ) default charset utf8mb4;-- 创建文章表 drop table if exists articleinfo; create table articleinfo(id int primary key auto_increment,title varchar(100) not null,content text not null,createtime timestamp default current_timestamp,updatetime timestamp default current_timestamp,uid int not null,rcount int not null default 1,state int default 1 )default charset utf8mb4;-- 创建视频表 drop table if exists videoinfo; create table videoinfo(vid int primary key,title varchar(250),url varchar(1000),createtime timestamp default current_timestamp,updatetime timestamp default current_timestamp,uid int )default charset utf8mb4;-- 添加一个用户信息 INSERT INTO mycnblog.userinfo (id, username, password, photo, createtime, updatetime, state) VALUES (1, admin, admin, , 2021-12-06 17:10:48, 2021-12-06 17:10:48, 1);-- 文章添加测试数据 insert into articleinfo(title,content,uid)values(Java,Java正文,1);-- 添加视频 insert into videoinfo(vid,title,url,uid) values(1,java title,http://www.baidu.com,1); 3.2 创建MyBatis项目 3.3 配置连接字符串和MyBatis 3.3.1 设置MyBatis配置 如果是application.properties添加如下内容 #配置数据库的连接字符串 spring.datasource.urljdbc:mysql://127.0.0.1:3306/myblog spring.datasource.usernameroot spring.datasource.password1111 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver # 设置 Mybatis 的 xml 保存路径 mybatis.mapper-locationsclasspath:mybatis/*Mapper.xml # 将数据库中的下换线转换成驼峰比如 user_name - userName mybatis-plus,configuration,map-underscore-to-camel-casetrue # 配置打印 MyBatis 执行的 SQL mybatis.configuration,log-implorg.apache,ibatis,logging.stdout,StdoutImpl # 配置打印 MyBatis 执行的 SQL Logging.level.com.example.demodebug 3.4 添加业务代码 下面按照后端开发的工程思路。也就是下面的流程来实现MyBatis查询所有用户的功能 3.4.1 添加实体类 先添加用户的实体类 Data public class User { private int id;private String username;private String password;private String photo;private Date createTime;private Date updateTime; } 3.4.2 添加mapper接口 数据持久层接口定义: Mapper public interface UserMapper {public ListUser getAll(); }3.4.3 添加UserMapper.xml 数据持久层的实现mybatis的固定xml格式 ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybati s.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.demo.mapper.UserMapper/mapper UserMapper.xml查询所有用户具体实现SQL ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybati s.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.demo.mapper.UserMapperselect idgetAll resultTypecom.example.demo.model.Userselect * from userinfo /select /mapper 以下是堆标签的说明 mapper标签需要指定namespace属性表示命名空间值为mapper接口的全限定名包括全包名.类名select查询标签是用来执行数据库的查询操作的                              id是和interface接口中定义的方法名称一样的表hi堆积恶口的具体实现方法 resultType时返回的数据类型也就是开头我们定义的实体类  3.4.4 添加Service  服务层实现代码如下 Service public class UserService {Autowiredprivate UserMapper userMapper;public ListUser getAll(){return userMapper.getAll();} }3.3.5 添加Controller  控制器层的实现代码如下; RestController RequestMapping(/user) public class UserController {Autowiredprivate UserService userService;RequestMapping(/getall)public ListUser getAll(){return userService.getAll();}} 上述代码写完则很难哥哥MyBatis的查询功能就实现完了接下来使用postman来测试一下 3.3.6 使用 postman 测试 4. 增删改操作 接下来我们实现一个用户的增加、删除、修改操作对应的MyBatis的标签如下 insert标签插入语句update标签修改语句delete标签删除语句 4.1 增加用户操作 controller实现代码 RequestMapping(/add)public int add(RequestBody User user){return userService.getadd(user);} mapper接口代码 public int add(User user); mapper.xml insert idaddinsert into userinfo(username,password,photo,state)values(#{username},#{password},#{photo},1) /insert postman访问 默认情况会返回受影响的行数 4.2 修改用户操作 controller代码 RequestMapping(/update) public int getupdate(Integer id,String name){return userService.update(id,name); } mapper.xml实现代码 update idupdateupdate userinfo set username#{name} where id#{id} /update 切记修改操作只能用post方法接收参数  4.3 删除用户操作 delete iddelByIddelete from userinfo where id#{id}/delete 5. 查询操作 5.1 单表查询 controller RequestMapping(/getuser) public User getUserById(Integer id) {return userService.getUserById(id); } Mapper.xml select idgetUserById resultTypecom.example.demo.model.Userselect * from userinfo where id#{id} /select 这里上面添加业务代码中 我们都已经提及了所以不做具体的解释了我们直接切入重点参数占位符#{}和${} 5.1.1 参数占位符#{}和${} #{}预编译处理${}字符直接替换 预编译处理是指MyBatis 在处理#{}时会将 SQL 中的 #{} 替换为?号使⽤ PreparedStatement 的 set ⽅法来赋值。直接替换是MyBatis 在处理 ${} 时就是把 ${} 替换成变量的值。 我们在执行#{}的查询操作的时候控制栏会显示 当我们使用${}的时候 这个就是区别所在 5.1.2 ${}优点 在我们使用淘宝一系列的软件的时候会有按照价格从高到底排序和从低到高排序此时我们使用的sql是 select idgetAllBySort parameterTypejava.lang.String resultTypecom. example.demo.model.Userselect * from userinfo order by id ${sort} /select 从小到大查询 SELECT * FROM your_table ORDER BY id ASC;从大到小查询 SELECT * FROM your_table ORDER BY id DESC;只有末尾差一个desc如果我们使用#{sort}就不可以查询因为使用#{sort}查询的时候如果传递的值是String则会加上单引号导致sql错误 5.1.3 SQL注入问题 SQL注入是一种常见的安全漏洞它允许攻击者通过在应用程序的用户界面中插入恶意的SQL代码来执行未经授权的数据库查询。以下是一个简单的SQL注入示例 假设有一个简单的登录页面用户通过提供用户名和密码登录。系统使用以下查询来验证用户是否存在 SELECT * FROM users WHERE username 输入的用户名 AND password 输入的密码;正常情况下如果用户输入了有效的用户名和密码他们将被成功验证否则登录将失败。 然而如果应用程序没有正确处理用户输入攻击者可以尝试输入恶意的输入例如 OR 11; --如果这个输入被简单地拼接到原始的SQL查询中那么查询就变成了 SELECT * FROM users WHERE username OR 11; -- AND password 输入的密码;这个查询中的 OR 11; --部分使得条件永远为真11永远成立并且--后面的内容是SQL注释它会使查询的其余部分被忽略。 因此无论用户输入了什么密码这个查询都会返回第一个用户因为条件始终为真。攻击者可能会成功绕过身份验证进而登录到系统中即使他们没有提供有效的用户名和密码。 为了防止SQL注入应用程序应该使用参数化查询或预编译语句而不是简单地拼接用户输入到SQL查询中。这样可以确保用户输入不会被解释为SQL代码。所以我们应该尽量使用#{}预编译 6. 动态SQL 在 MyBatis 中动态 SQL 是一种用于根据条件生成不同 SQL 片段的机制。if、where 和 set 是 MyBatis 动态 SQL 中常用的元素之一。 下面简要介绍一下 if、where 和 set 的用法 6.1 if标签 if 元素if 元素允许你在 SQL 中包含条件判断以便根据条件动态生成 SQL 片段。例如 select idgetUserByConditionSELECT * FROM usersWHEREif testusername ! null and username ! username #{username}/ifif testemail ! null and email ! AND email #{email}/if /select但是我们可以发现如果我们 第一个条件不满足的话第二个条件满足sql语句就会出现问题变成 SELECT * FROM users WHERE AND email #{email} 所以我们就要提到where标签 6.2 where标签 where 元素where 元素用于将所有条件组装在一个 WHERE 子句中并自动处理条件之间的 AND 连接。示例 select idgetUserByCondition parameterTypemap resultTypeUserSELECT * FROM userswhereif testusername ! null and username ! AND username #{username}/ifif testemail ! null and email ! AND email #{email}/if/where /selectwhere 元素会自动去除不必要的 AND。 6.3 set标签 set 元素set 元素用于动态生成 UPDATE 语句中的 SET 子句根据传入的参数动态设置更新的字段。示例 update idupdateUser parameterTypeUserUPDATE userssetif testusername ! nullusername #{username},/ifif testpassword ! nullpassword #{password},/ifif testemail ! nullemail #{email},/if/setWHERE id #{id} /update但是如果set中的条件只满足一个的话就会出现一个问题 在末尾会多出一个来这个时候我们就需要trim标签了 6.4 trim标签 trim 元素是用于处理动态 SQL 时非常有用的元素之一。它允许你定义一种修剪trim行为用于删除生成 SQL 语句中多余的字符例如多余的逗号、AND 或 OR 等。 !-- 在 set 子句中使用 trim 元素 -- update idupdateUser parameterTypeUserUPDATE userssettrim suffixOverrides,if testusername ! nullusername #{username},/ifif testpassword ! nullpassword #{password},/ifif testemail ! nullemail #{email},/if/trim/setWHERE id #{id} /updatetrim标签中具有很多的参数我们一一介绍一下 prefix可选 在整个 trim 元素内容的最前面插入指定的前缀。示例 trim prefixAND ( suffix) suffixOverridesAND!-- content -- /trimsuffix可选 在整个 trim 元素内容的最后面插入指定的后缀。示例 trim prefixAND ( suffix) suffixOverridesAND!-- content -- /trimprefixOverrides可选 从整个 trim 元素内容的最前面开始检查去除第一个匹配的指定前缀。示例 trim prefixAND ( suffix) prefixOverridesAND!-- content -- /trimsuffixOverrides可选 从整个 trim 元素内容的最后面开始检查去除第一个匹配的指定后缀。示例 trim prefixAND ( suffix) suffixOverridesAND!-- content -- /trim
http://www.hkea.cn/news/14463913/

相关文章:

  • 济宁做网站哪家好wordpress显示空白页
  • 网站长期建设运营计划书广州官方发布
  • 凡客公司百度工具seo
  • 乌班图系统做网站envato wordpress toolkit
  • 建设网站的流程图莆田 做外国 网站
  • 哪个网站代做ppt便宜做网站带来好处
  • 网站制作服务好的商家南宁市视点网络信息有限公司
  • 如何提高网站访问量六安开发区网站
  • 物流网站平台建设mysql数据库建设网站
  • 广州白云学校网站建设国内wordpress著名站
  • 关于网站开发的自我评价中小企业网络规划与设计论文
  • 青岛做商城网站阿里云可以放几个网站
  • 网站建设 搜狐网站建设费可以走办公费吗
  • 现在流行什么语言建设网站如何建个人网站教程
  • 河南住房与建设厅网站小白node怎么做网站
  • 网站开发培训机构哪个好移动网站开发教材
  • 旅游网站内容规划特点专业网站设计速寻亿企邦
  • 房地产公司网站源码wordpress简约文艺
  • 网站是否开启gzip深圳做企业网站的公司推荐
  • app与网站的区别是什么福田公司怎么样
  • 教育网站设计方案什么是互联网企业
  • 有没有网站找人帮忙做图网站建设推介会发言稿
  • 天津微信网站开发购买友情链接网站
  • iis6.1添加网站网站的站点地图设计
  • 设计参考图哪个网站好中国100强排名企业名单
  • 网站开发待遇怎么样广告设计培训目的
  • 网站主页图片设计页面跳转的方式有哪些
  • 网站设计 seowordpress会员充值
  • 铁汉生态建设有限公司网站wordpress黑糖主题破解
  • 网站推广需要数据整改吗开发公司交房归物业公司交给物业公司