<delete id="deleteNews" parameterType="int"> DELETE FROM news WHERE id = #{id} </delete> mapper.xml返回int型,怎么改
时间: 2024-10-15 22:12:21 浏览: 17
这个`mapper.xml`片段是一个MyBatis框架中的删除操作SQL映射,用于从`news`表中根据`id`字段删除一条记录。默认情况下,`DELETE`语句会直接执行,不会返回任何值,因为它的结果集通常为空。如果想让它返回影响行数作为`int`类型的值,你可以这样做:
```xml
<update id="deleteNews" parameterType="int" resultType="int">
DELETE FROM news WHERE id = #{id}
<selectKey keyProperty="rowAffected" resultType="int" order="BEFORE">
SELECT ROW_NUMBER() OVER() AS rowAffected FROM DUAL
</selectKey>
</update>
```
这里添加了一个`selectKey`标签,它会在更新操作前执行一个简单的查询,获取被删除的行数(`ROW_NUMBER()`),并将结果赋值给名为`rowAffected`的属性,然后返回这个值。
相关问题
<delete id="deleteNews" parameterType="int"> DELETE FROM news WHERE id = #{id} </delete>返回int型,代码怎么改
这个SQL语句是一个Spring框架中的JPA(Java Persistence API)删除操作,用于从`news`表中根据指定的ID删除一条新闻记录。如果需要该操作返回一个整数类型的值,通常代表影响行数,你可以将其包装成一个自定义的数据库操作,例如将它放在一个Repository接口的方法中,并让它返回一个Integer。
首先,在你的Repository接口中添加一个方法:
```java
public interface NewsRepository extends JpaRepository<News, Integer> {
@Modifying
@Query("DELETE FROM News WHERE id = :id")
default int deleteNewsById(@Param("id") int id) {
return getEntityManager().createQuery("DELETE FROM News WHERE id = :id", Integer.class).setParameter("id", id).executeUpdate();
}
}
```
然后在Service层调用这个方法并处理返回结果:
```java
@Service
public class NewsService {
private final NewsRepository newsRepository;
public NewsService(NewsRepository newsRepository) {
this.newsRepository = newsRepository;
}
public int deleteNews(int id) {
return newsRepository.deleteNewsById(id);
}
// 其他业务逻辑...
}
```
解释一下这段代码:<?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD com.example.Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.UserMapper"> <resultMap id="result" type="com.example.demo.entity.User"> <result property="userId" column="userId" /> <result property="userDate" column="userDate" /> <result property="userName" column="userName" /> <result property="userAddress" column="userAddress"/> </resultMap> <select id="ListUser" resultMap="result"> SELECT * FROM user </select> <select id="findUserByName" resultMap="result" parameterType="String"> SELECT * FROM user where userName like concat(concat('%',#{userName}),'%') order by userId desc </select> <select id="queryPage" resultMap="result" parameterType="Integer"> select * from user order by userId desc limit #{startRows},5 </select> <select id="getRowCount" resultType="Integer"> select count(*) from user </select> <insert id="insertUser" parameterType="com.example.demo.entity.User"> INSERT INTO user ( userId,userDate,userName,userAddress ) VALUES ( #{userId}, #{userDate, jdbcType=VARCHAR}, #{userName, jdbcType=VARCHAR}, #{userAddress, jdbcType=VARCHAR} ) </insert> <delete id="delete" parameterType="int"> delete from user where userId=#{userId} </delete> <update id="Update" parameterType="com.example.demo.entity.User"> update user set user.userDate=#{userDate},user.userName=#{userName},user.userAddress=# {userAddress} where user.userId=#{userId} </update> </mapper>
这段代码是一个MyBatis的映射文件,用于配置数据库操作的SQL语句与Java方法之间的映射关系。它包含了一些SQL语句和一些配置信息,让我们来逐个解释:
- <?xml version = "1.0" encoding = "UTF-8"?>:这是XML文件的声明部分,指定了XML文件的版本和编码方式。
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD com.example.Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">:这是XML文件的文档类型声明,指定了XML文件的DTD(文档类型定义)规范,用于验证XML文件结构的合法性。
- <mapper namespace="com.example.demo.mapper.UserMapper">:指定了映射文件的命名空间,即该文件中定义的SQL语句与Java方法的映射关系将归属于com.example.demo.mapper.UserMapper这个命名空间。
- <resultMap>:定义了一个结果映射,用于将查询结果映射到Java对象中。其中id为"result",type为"com.example.demo.entity.User",表示将查询结果映射到com.example.demo.entity.User对象中。
- <select>:定义了一个查询语句,用于从数据库中获取数据。其中id为"ListUser",resultMap为"result",表示将查询结果映射到上面定义的resultMap中。
- <insert>:定义了一个插入语句,用于向数据库中插入数据。其中id为"insertUser",parameterType为"com.example.demo.entity.User",表示插入的数据对象是com.example.demo.entity.User类型的对象。
- <delete>:定义了一个删除语句,用于从数据库中删除数据。其中id为"delete",parameterType为"int",表示删除的数据是一个整数类型的值。
- <update>:定义了一个更新语句,用于更新数据库中的数据。其中id为"Update",parameterType为"com.example.demo.entity.User",表示更新的数据对象是com.example.demo.entity.User类型的对象。
综上所述,这段代码是一个MyBatis映射文件,定义了一些SQL语句和配置信息,用于将数据库操作与Java方法进行映射。
阅读全文