SpringBoot 操作SQL Server数据库实现动态查询 模糊查询 增删改等操作

背景: SpringBoot + Azure SQL Server 实现CRUD

遇到的问题:

  1. 动态查询使用 “?” 出错
@Query(value ="select * from user c where c.Category=?1")
Play GetCellsByCategory(String category);

报错误given 1 parameters but expected 0
在这里插入图片描述
解决方法 :将占位符修改成 “:” 成功

@Query(value ="select * from user c where c.Category=:category")
Play GetCellsByCategory(@Param("category") String category);
  1. 模糊查询 使用"like" 出错
@Query(value ="select * from user c where c.Category LIKE %:category%")
Play GetCellsByCategoryLike(@Param("category") String category);

报错误:com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.
在这里插入图片描述
解决方法: 使用 LIKE + CONCAT(字符串连接函数) 成功!!

@Query(value ="select * from user c where c.Category LIKE CONCAT('%',:category,'%')")
Play GetCellsByCategoryLike(@Param("category") String category);
  1. 添加、删除、更新数据 出错

解决方法: 使用 @Modifying @Transactional 实现数据库 update、delete、insert操作

当我们要通过自已写的更新、插入、删除SQL语句来实现更新、插入、删除操作时,至少需要用两个步骤:

1)@Query来注入我们自定义的sql;

2)使用@Modifying来标注是一个更新类的自定义语句。

	@Transactional
    @Modifying
    @Query(value ="DELETE FROM dbo.call WHERE call.id = :id")
    int DeleteCall(long id);

总结

  • SQL 语句中占位符 ‘?’ 在SQL Server 中需要使用 ‘:’
  • SQL 语句中模糊查询 LIKE 在SQL Server中需要使用 CONCAT(字符串拼接函数)
  • SQL 语句中对于执行update和delete语句需要添加@Modifying注解

SQL与SQL Server的区别

  • SQL是数据库查询语言,是一种用于数据库操作的语言,被作为关系型数据库的标准语言。可以查询、定义、操作控制数据库中的全部工作。
  • SQL Server是微软开发的小型关系数据库管理系统。
  • ORACLE则是大型关系数据库系统,是目前世界上最流行的关系数据库管理系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值