用mapper 层写方法,mapper .xml写一个插入的sql
时间: 2024-02-01 19:04:09 浏览: 89
假设我们有一个 User 实体类,包含 id、name、age 三个属性,对应的表为 user,那么可以使用 mapper 和 mapper.xml 文件写如下的插入 SQL:
1. 在 mapper 接口中定义插入方法
```
@Mapper
public interface UserMapper {
int insertUser(User user);
}
```
2. 在 mapper.xml 文件中编写插入 SQL
```
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insertUser" parameterType="com.example.entity.User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
</mapper>
```
在上面的例子中,使用 `<insert>` 标签指定了要执行的 SQL 语句,其中 #{name} 和 #{age} 是占位符,表示要插入的数据。同时,`parameterType` 属性指定了参数类型为 User 对象,MyBatis 会自动将 User 对象中的 name 和 age 属性的值填充到 SQL 语句中的占位符中。
执行插入操作后,会返回一个 int 类型的结果,表示受影响的行数。如果插入成功,返回的值为 1,否则返回 0。
相关问题
用mapper 层写用map传参方法,mapper .xml写一个插入的sql
假设我们有一个 User 实体类,包含 id、name、age 三个属性,对应的表为 user,那么可以使用 mapper 和 mapper.xml 文件写一个使用 map 传参的插入 SQL:
1. 在 mapper 接口中定义插入方法
```
@Mapper
public interface UserMapper {
int insertUser(Map<String, Object> map);
}
```
2. 在 mapper.xml 文件中编写插入 SQL
```
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insertUser" parameterType="java.util.Map">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
</mapper>
```
在上面的例子中,使用 `<insert>` 标签指定了要执行的 SQL 语句,其中 #{name} 和 #{age} 是占位符,表示要插入的数据。同时,`parameterType` 属性指定了参数类型为 Map,MyBatis 会自动将 map 中的 key 对应的 value 填充到 SQL 语句中的占位符中。
在 Java 代码中调用该方法时,可以创建一个 map 对象,将要插入的数据放入 map 中,然后将 map 传入 insertUser 方法中。示例代码如下:
```
Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("age", 18);
int result = userMapper.insertUser(map);
```
执行插入操作后,会返回一个 int 类型的结果,表示受影响的行数。如果插入成功,返回的值为 1,否则返回 0。
Mybatis中,Mapper接口方法名和mapper.xml中定义的每个sql的id可以不同
是的,Mapper接口方法名和mapper.xml中定义的每个sql的id可以不同。在Mybatis中,Mapper接口的方法名只需要与Mapper接口中定义的方法名一致即可,而与mapper.xml中定义的sql语句的id无关。Mybatis会根据Mapper接口方法名去寻找对应的mapper.xml文件中的sql语句,如果找到了,则会执行该sql语句。因此,我们可以将mapper.xml中定义的sql语句的id设置为任意名称,只要Mapper接口中定义的方法名与其一致即可。
阅读全文