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

MyBatis—增删查改操作

@Inset("insert into User(username,password,name,age) values(#{username},#{password},#{name},#{age})")
public void insert(User user);
// 注意:届时在括号内填的只是一个User类的对象,而不是上述的一个字段
|
|
|
User user = new User("...","...","...",...)
usermapper.insert(user);

					// 传统的写法:
@delete("delete from User where id = 5")
public void DeleteAll();// 占位符写法:1. #{}占位符
@delete("delete from User where id = #{id}")
public void DeleteAll(Integer id);
|
|
|
测试类中:
@Test
void Delete(){usermapper.DeleteAll(1);
}
// 区别:使用#{}来替代数字,在括号中定义好数据类型和变量,在测试类中赋入变量2. ${}占位符
@delete("delete from User where id = ${id}")
public void DeleteAll(Integer id);
|
|
|
测试类中:
@Test
void Delete(){usermapper.DeleteAll(1);
}

#{}${} 的区别:
在运行日志中,#{}会在id的位置上以一个?出现,也就是经历一个预编译的阶段。
在这里插入图片描述
而 ${}依旧会以原值出现
这就意味着,在字符串相关的sql语句中,使用#{}要比使用 ${}来的安全, ${}占位符若用在拼接字符串中,容易出现sql注入这种安全问题。

@Select("select * from User where id = #{id}, username = #{username}");
public void Select(String id,String username);
若是基于SpringBoot官方骨架创建出来的项目只需这样写就可以了若不是,则需要这样写:
@Select("select * from User where id = #{id}, username = #{username}");
public void Select(@Param(id)String id,@Param(username)String username);
原因:
1.@Param()是给参数起名字的,明确标注这个参数就是id/username,为什么要这么做,其实是因为在字节码文件中,参数id/username并不叫id/username,而是别的符号(arg0,arg1),这会使得MyBatis找不到参数,才需要设置@Param来让Mybatis知道这个值对应的就是这个参数
2.而基于SpringBoot骨架创建的项目,在pom.xml文件中有这样一个父类,如下图:

在这里插入图片描述
而进入这个父类的pom.xml文件中会发现:
在这里插入图片描述
< parameters > true < parameters >
的值是true,这就意味着不用再显式注明@Param()了,会自动按照括号内的参数名,来匹配实际括号中传进来的值,然后根据SQL语句中的参数名来返回。

但是正因如此才要注意,括号内的参数名和SQL语句中的对应的参数名一定要一致,不然到时候通过括号内参数名匹配到值了,但是无法从SQL语句中找到和括号中一样的参数名,这样就返不回去了。

@Upadate("update User set username = #{username}, password = #{password}, name = #{name}, id = #{id} where id = #{id}")
public void Update(User user);
|
|
|
void test(){User user  = new User("...","...","...", ... , ...);username.Update(user);
}
http://www.dtcms.com/a/500707.html

相关文章:

  • 扬州润扬交通建设集团网站做网站排名优化是怎么回事
  • 无锡企业推广网站网站建设策划书范文
  • 一个网站如何做双语安徽网络公司排名
  • 聊天室项目开发——安装并使用gtest库以及spdlog日志组件
  • 桐乡建设局网站智能建站服务平台
  • Altium Designer(AD24)View视图功能总结
  • 国产麒麟系统门禁主板--XC3576IC,以AI芯赋能多元生物识别生态
  • 梅州做网站设计公司微信怎么建立公众号
  • 中国企业网络营销实例郑州网站优化平台
  • 关于建立网站的思路免费建立网站软件
  • 宁波网站建设详细内容在线课程设计
  • 网站建设代码下载大全wordpress左侧菜单
  • 商业网站建设规划书自我做t恤的网站
  • 企业网站备案名称要求做外汇网站做什么类型网站好
  • 能从源代码黑进网站修改数据吗字体升级wordpress
  • a站播放量最高的视频测评网站架构
  • java.text 包详解
  • 做贸易选哪家网站精品资源共享课网站建设 碧辉腾乐
  • Kubernetes日志管理:使用Loki进行日志采集
  • 代人做网站建设厅质监总站网站
  • claude-code使用figmamcp
  • 红黑树详细介绍(五大规则、保持平衡操作、Java实现)
  • 上海装修网站大全福田商城网站建设
  • 边学边用之Scrapy中使用xpath获取类元素问题
  • 网站怎样做seo南京seo网站优化
  • switch case语句 密集连续值 - 可能生成跳转表 汇编分析
  • 网站广告联盟平台wordpress评论优化
  • 怎么做营销网站棋牌网站开发需要多少钱
  • 怎么搞一个服务器建设网站中国美食网页设计模板
  • 网站内链 外链多语言商城网站开发