mybatisplus存取list集合
时间: 2024-04-18 07:22:48 浏览: 13
在MyBatis Plus中存取List集合可以通过自定义类型处理器来实现。下面是一个示例演示如何在MyBatis Plus中存取List集合:
1. 创建自定义类型处理器
```java
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public class ListTypeHandler extends BaseTypeHandler<List> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException {
// 将List转换成字符串,存储到数据库中
String listStr = String.join(",", parameter);
ps.setString(i, listStr);
}
@Override
public List getNullableResult(ResultSet rs, String columnName) throws SQLException {
// 从数据库中取出字符串,转换成List集合
String listStr = rs.getString(columnName);
return Arrays.asList(listStr.split(","));
}
@Override
public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String listStr = rs.getString(columnIndex);
return Arrays.asList(listStr.split(","));
}
@Override
public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String listStr = cs.getString(columnIndex);
return Arrays.asList(listStr.split(","));
}
}
```
2. 在MyBatis Plus的全局配置文件中配置自定义类型处理器
```xml
<configuration>
<typeHandlers>
<typeHandler handler="com.example.ListTypeHandler"/>
</typeHandlers>
</configuration>
```
3. 在实体类中使用List集合
```java
public class User {
private Long id;
private String name;
private List<String> hobbies;
// 省略getter和setter方法
}
```
4. 在Mapper接口中定义查询方法
```java
public interface UserMapper extends BaseMapper<User> {
List<User> selectByHobbies(List<String> hobbies);
}
```
5. 在Mapper XML文件中编写查询语句
```xml
<select id="selectByHobbies" resultType="com.example.User">
SELECT * FROM user WHERE hobby IN
<foreach collection="hobbies" item="hobby" open="(" separator="," close=")">
#{hobby}
</foreach>
</select>
```
通过以上步骤,就可以在MyBatis Plus中存取List集合了。