mybatis通用 default int deleteByMap(Map<String, Object> columnMap) 例子
时间: 2024-12-23 22:23:50 浏览: 7
MyBatis 的 `deleteByMap` 方法通常是在 Mapper 接口中定义的一个用于删除记录的通用方法,它接受一个 Map 对象作为参数,该 Map 中的键值对对应数据库表中的列名和待删除数据的属性值。这样设计的好处是可以根据传入的不同参数动态地构建 SQL 删除语句,提高了代码的灵活性。
例如,在一个用户管理的 Mapper 接口中,你可能会看到这样的定义:
```java
public interface UserMapper {
@Delete("DELETE FROM user WHERE ${column}")
default int deleteUserByMap(Map<String, Object> columnMap);
}
```
在这个 `deleteUserByMap` 方法中,`${column}` 是一个占位符,MyBatis 会根据 `columnMap` 中的键来替换它,如 `columnMap.get("id")` 或 `columnMap.get("username")`。实际使用时,你可以这样调用:
```java
Map<String, Object> params = new HashMap<>();
params.put("id", 123); // 指定要删除的用户的ID
int result = userMapper.deleteUserByMap(params);
```
这将动态生成并执行类似 "DELETE FROM user WHERE id = 123" 的 SQL 删除语句。
相关问题
mybatis中传MAP
在MyBatis中,可以使用Map作为参数来传递键值对。为了在XML文件中使用Map参数,需要进行以下步骤:
1. 将参数类型设置为Map。
2. 在XML中可以直接使用Map的键来获取对应的值。
举个例子,假设有如下的XML配置和Mapper接口方法:
```xml
<insert id="addUser" parameterType="map">
insert into user (id, name, pwd) values (#{userid}, #{username}, #{userpwd});
</insert>
```
```java
// Map的使用
int addUser(Map<String, Object> map);
```
在测试代码中,可以按照以下方式传递Map参数:
```java
@Test
public void addUser2() {
SqlSession sqlSession = MyBatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map = new HashMap<>();
map.put("userid", 8888);
map.put("username", "java爱好者");
map.put("userpwd", "java265.com");
int result = mapper.addUser(map);
if (result > 0) {
System.out.println("添加成功!");
}
sqlSession.commit(); // 增删改一定要提交事务
sqlSession.close();
}
```
这样就可以通过Map参数在MyBatis中传递键值对了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [SSM框架的学习与应用JavaEE(第二天)Mybatis的深入学习](https://download.csdn.net/download/m0_53659738/88241458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Mybatis中如何传入map参数呢?](https://blog.csdn.net/qq_25073223/article/details/128093957)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
将这个代码使用mybatis实现public List selectUserList(int pageNo, int pageSize) throws SQLException { QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); String sql = "select * from user limit ?,?"; return r.query(sql, new BeanListHandler<User>(User.class), (pageNo-1)*pageSize,pageSize ); }
将这个代码使用 MyBatis 实现,您需要按照以下步骤进行操作:
1. 配置 MyBatis
在 MyBatis 的配置文件中,需要配置数据源和映射文件。数据源可以使用 JNDI 或者直接配置,这里使用直接配置的方式:
```xml
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
```
2. 创建 UserMapper.xml
在 MyBatis 中,我们使用 XML 文件来描述 SQL 语句和映射关系。在这个例子中,我们需要创建 UserMapper.xml 文件,并编写 selectUserList 方法的 SQL 语句和映射关系:
```xml
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUserList" parameterType="java.util.Map" resultType="com.example.entity.User">
select * from user limit #{offset}, #{pageSize}
</select>
</mapper>
```
3. 创建 UserMapper 接口
在 MyBatis 中,我们使用 Java 接口来定义 SQL 映射关系。在这个例子中,我们需要创建 UserMapper 接口,并定义 selectUserList 方法:
```java
public interface UserMapper {
List<User> selectUserList(Map<String, Object> params);
}
```
4. 调用 selectUserList 方法
在 MyBatis 中,我们使用 SqlSessionFactory 和 SqlSession 来执行 SQL 语句。在这个例子中,我们需要创建 SqlSessionFactory 和 SqlSession,并调用 selectUserList 方法:
```java
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession session = sessionFactory.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
Map<String, Object> params = new HashMap<>();
params.put("offset", (pageNo-1)*pageSize);
params.put("pageSize", pageSize);
List<User> userList = userMapper.selectUserList(params);
} finally {
session.close();
}
```
这样,我们就使用 MyBatis 实现了 selectUserList 方法。
阅读全文