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

开发网站开发工程师招聘常德百度推广

开发网站开发工程师招聘,常德百度推广,Wordpress 域名授权插件,网站做优化有用吗1. 模糊查询 在MyBatis中进行模糊查询时#xff0c;有以下三种常见的实现方式#xff1a; 1.1. 错误示范 先来个准备操作#xff0c;并做一个错误示例 根据姓名#xff0c;模糊查询用户#xff0c;(x小x) 更新数据表 SQLMapper.java package com.sakurapaid.mybatis3…1. 模糊查询 在MyBatis中进行模糊查询时有以下三种常见的实现方式 1.1. 错误示范 先来个准备操作并做一个错误示例 根据姓名模糊查询用户(x小x) 更新数据表 SQLMapper.java package com.sakurapaid.mybatis3.select.mapper;import com.sakurapaid.mybatis3.select.bean.User; import org.apache.ibatis.annotations.Param;import java.util.List;public interface SQLMapper {// 根据姓名模糊查询用户(x小x)ListUser findUserByName(Param(name) String name); } SQLMapper.xml、 这是错误示例我是——like %#{name}% ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.sakurapaid.mybatis3.select.mapper.SQLMapper!--根据姓名模糊查询用户(x小x)--select idfindUserByName resultTypecom.sakurapaid.mybatis3.select.bean.Userselect * from user where name like %#{name}%/select /mapper测试输出 package com.sakurapaid.mybatis3.select.test;import com.sakurapaid.mybatis3.select.bean.User; import com.sakurapaid.mybatis3.select.mapper.SQLMapper; import com.sakurapaid.mybatis3.select.utils.SqlSessionUtils; import org.apache.ibatis.session.SqlSession; import org.junit.jupiter.api.Test;import java.util.List;public class SQLTest {Testpublic void test(){SqlSession sqlSession SqlSessionUtils.getSqlSession();SQLMapper mapper sqlSession.getMapper(SQLMapper.class);ListUser out mapper.findUserByName(小);for (User user : out) {System.out.println(user);}} } 记住我上面的SQL语句编译时就会报错 在 SQL 查询语句中使用了 MyBatis 的动态参数 #{name}但在对应的 mapper 映射配置中未正确设置该参数导致在执行 SQL 查询时JDBC 无法识别并适配这个参数从而抛出了“Parameter index out of range”的异常。 所以#{ }虽然常用但并不是万能的遇到模糊查询还是要适当调整的也就引出了下面要讲到的三种在mybatis中模糊查询的方法 1.2. 方式一使用#{}占位符 #{ }占位符结合contact函数 select idfindUserByName resultTypecom.sakurapaid.mybatis3.select.bean.Userselect * from user where name like concat(%,#{name},%)/select 解释 这里使用了#{}占位符来传递参数name。MyBatis会将#{name}替换为预编译语句中的参数并自动为其加上单引号。通过concat函数将通配符%与参数值拼接成完整的模糊查询条件。这种方式能够防止SQL注入因为参数值是经过预编译处理的且无需手动添加单引号。 测试输出 测试语句还是最上面那个 1.3. 方式二使用${}变量替换 直接使用${ }但记得要加引号 select idtestMohu resultTypeUserselect * from user where name like %${name}% /select 解释 这种方式使用${}变量替换符来嵌入参数name的值。${name}会被直接替换为变量的值不会添加任何额外的引号。因此如果传入的name值为小生成的SQL语句将是select * from t_user where username like %小%。这种方式虽然简洁但存在SQL注入的风险因为变量值未经预编译直接插入到SQL语句中。除非能确保传入值的安全性否则不建议使用此方式。 测试输出 测试语句还是最上面那个 1.4. 方式三手动添加双引号 最推荐的也是实际开发中最常用的 select idtestMohu resultTypeUserselect * from user where name like %#{name}% /select 解释 这种方式结合了#{}占位符的预编译安全性与手动添加双引号来包裹通配符和参数。虽然看起来与方式一类似但这里的#{name}被双引号包围使得MyBatis在替换参数时生成的SQL语句中参数值仍被双引号包围形如select * from user where name like %小%。 2. 批量删除 要使用${ }而非#{ }来避免自动添加单引号 定义接口方法 // 批量删除用户 int deleteMore(Param(ids) String ids); 编写Mapper XML映射文件 看清楚我这个错误示范 delete iddeleteMoredelete from user where id in (#{ids}) /delete 测试输出 Test public void test(){SqlSession sqlSession SqlSessionUtils.getSqlSession();SQLMapper mapper sqlSession.getMapper(SQLMapper.class);int i mapper.deleteMore(4,5,6);System.out.println(i); } 不能使用#{ }只能使用${ } delete iddeleteMoredelete from user where id in (${ids}) /delete 受影响行数1因为我表里的id值只有1-4就删除了4, 3. 动态设置表名 也要使用${ }而非#{ }来避免自动添加单引号 定义接口方法 /*** 动态设置表名查询所有的用户信息* param tableName* return*/ ListUser getAllUser(Param(tableName) String tableName); 编写Mapper XML映射文件 看清楚我这个错误示范 select idgetAllUser resultTypecom.sakurapaid.mybatis3.select.bean.Userselect * from #{tableName} /select 测试输出 Test public void test(){SqlSession sqlSession SqlSessionUtils.getSqlSession();SQLMapper mapper sqlSession.getMapper(SQLMapper.class);ListUser allUser mapper.getAllUser(user);allUser.forEach(System.out::println); } 不能使用#{ }只能使用${ } select idgetAllUser resultTypecom.sakurapaid.mybatis3.select.bean.Userselect * from ${tableName} /select 4. 添加功能获取自增的主键 在数据库应用开发中使用自增主键是一种常见且实用的设计策略。自增主键字段的值会自动递增每当插入一条新记录时数据库系统会为其自动分配一个唯一的、递增的整数值作为主键。 场景一简化数据插入操作 场景描述 当需要在数据库中创建新的实体记录如用户、订单、文章等时开发者通常需要为这些记录指定一个唯一的标识符。使用自增主键可以免去手动为每条新记录生成唯一ID的复杂性。 使用自增主键 开发者只需关注其他非主键字段的数据填充插入操作时无需指定主键值。数据库系统会自动为新插入的记录生成下一个自增主键值。例如在创建新用户时只需提供用户名、密码、邮箱等信息主键ID由数据库自动生成。 场景二确保数据唯一性 场景描述 在多用户并发环境下如果没有有效的机制保证主键的唯一性可能会出现主键冲突导致数据插入失败。自增主键能有效防止此类问题。 使用自增主键 数据库系统内部对自增主键的管理确保了每次插入新记录时主键值的唯一性。即使在高并发场景下不同用户同时尝试插入记录也不会产生相同的主键值从而避免数据冲突。 定义接口方法 // 添加用户 int insertUser(User user); 编写Mapper XML映射文件 useGeneratedKeystrue指示MyBatis在执行INSERT操作后使用JDBC的getGeneratedKeys()方法获取数据库自动生成的主键值。 keyPropertyid指定获取到的自增主键值应被赋给传入映射语句的参数对象如User的特定属性如id实现主键值的自动回填。 两者结合使用确保在插入新记录后自动生成的主键能被无缝地赋给对应的Java对象属性简化了主键管理与后续业务逻辑的处理。 !--useGeneratedKeys设置使用自增的主键-- !--keyProperty因为增删改有统一的返回值是受影响的行数 因此只能将获取的自增的主键放在传输的参数user对象的某个属性中-- insert idinsertUser useGeneratedKeystrue keyPropertyidinsert into user values (null,#{name},#{age},#{sex}); /insert 测试输出 Test public void test(){SqlSession sqlSession SqlSessionUtils.getSqlSession();SQLMapper mapper sqlSession.getMapper(SQLMapper.class);User user new User(null, 李四, 23, 男);int i mapper.insertUser(user);if (i 0) {System.out.println(插入成功);System.out.println(user);} else {System.out.println(插入失败);} }
http://www.hkea.cn/news/14481075/

相关文章:

  • 郑州做网站费用常德做网站专业公司哪家好
  • 第一代网站建设技术阿里云wordpress安装
  • 中色十二冶金建设有限公司网站怎样在百度打广告
  • 网站建设三折页塘沽做网站公司
  • iis网站301重定向免费 网站 平台
  • 吉林省高等级公路建设局 网站链接缩短生成器
  • 网站设置301重定向广州手机网站
  • 金色财经网站开发产品推广运营的公司
  • 制作网站站用的软件下载东莞好的网页设计培训试听
  • 青岛模板建站房产类网站开发
  • 做外贸网站进行销售 需要纳税吗网站后台如何设计
  • 做三年网站需要多少钱wordpress建站网页无法运作
  • 我想给别人做网站建设网站的拓扑图
  • 网站流量查询网站统计查询wordpress上传目录
  • 查企业资质上什么网站网站建设审核需要多长时间
  • 南通网站建企业型网站建设咨询电话
  • 网站建设原理wordpress评论推广
  • 做交友信息网站可行么购买完域名后怎么做网站
  • 中国最早做网站是谁公司网络推广营销
  • 网站开发 简历app设计欣赏
  • 营销团队网站建设网站公司排行榜
  • 资源网站都有哪些wordpress专栏
  • wordpress wiki 模版seo引流赚钱吗
  • 诸暨有哪些制作网站公司流量对于网站盈利
  • 为拟建设的网站申请一个域名沧州市有哪些网络公司
  • 公司网站在国外打开很慢使用cdn好还是国外租用服务器好用python自动写wordpress
  • 域名连接网站美容北京公司网站建设
  • 手机一键建站南阳网站seo顾问
  • 聊城网站建设科技公司国内购物网站排名
  • 山西省建设厅官方网站网站设计需要什么专业