mapper.xml中 使用find_in_set
时间: 2024-05-01 20:03:03 浏览: 108
使用`find_in_set`函数可以方便地在逗号分隔的字符串中查找某个值是否存在,其语法如下:
```
FIND_IN_SET(str, strlist)
```
其中,`str`表示要查找的值,`strlist`表示逗号分隔的字符串。
在`mapper.xml`中使用该函数可以像下面这样:
```xml
<select id="getUserByRole" parameterType="string" resultType="User">
SELECT * FROM user WHERE FIND_IN_SET(#{role}, roles)
</select>
```
其中,`#{role}`表示传入的角色名称,`roles`是存储用户角色的字段名。该语句将返回所有角色包含传入角色名称的用户信息。
相关问题
在MybatisPLus中使用find_in_set的用法
在 MybatisPlus 中使用 find_in_set 函数可以通过以下方式实现:
1. 在 xml 映射文件中编写 SQL 语句,使用 CONCAT 和 GROUP_CONCAT 组合起待匹配字符串。
<select id="findInSet" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM table_name
WHERE FIND_IN_SET(#{matchValue}, CONCAT(column_name, ',', GROUP_CONCAT(match_column_name)))
</select>
2. 在对应的 Mapper 接口中声明对应的方法。
@Mapper
public interface TableMapper extends BaseMapper<TableEntity> {
@Select("SELECT COUNT(*) FROM table_name WHERE FIND_IN_SET(#{matchValue}, CONCAT(column_name, ',', GROUP_CONCAT(match_column_name)))")
Integer findInSet(@Param("matchValue") String matchValue);
}
其中,#{matchValue} 表示待匹配的字符串。需要注意的是,如果字符串中含有逗号,需要进行分隔符的转义处理。
使用Java MySQL springboot mybatis 写一段短信模板的增删改查,需要用到controller ,mapper ,mapper.xml,service,serviceimpl dto
好的,以下是一个简单的短信模板增删改查的示例代码:
1. 定义DTO类
```
public class MessageTemplateDTO {
private Long id;
private String name;
private String content;
// 省略getter和setter
}
```
2. 定义Mapper接口
```
@Mapper
public interface MessageTemplateMapper {
List<MessageTemplateDTO> findAll();
MessageTemplateDTO findById(Long id);
void save(MessageTemplateDTO messageTemplateDTO);
void update(MessageTemplateDTO messageTemplateDTO);
void deleteById(Long id);
}
```
3. 定义Mapper XML文件
```
<mapper namespace="com.example.mapper.MessageTemplateMapper">
<resultMap id="messageTemplateDTO" type="com.example.dto.MessageTemplateDTO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="content" column="content"/>
</resultMap>
<select id="findAll" resultMap="messageTemplateDTO">
SELECT id, name, content FROM message_template
</select>
<select id="findById" parameterType="java.lang.Long" resultMap="messageTemplateDTO">
SELECT id, name, content FROM message_template WHERE id = #{id}
</select>
<insert id="save" parameterType="com.example.dto.MessageTemplateDTO">
INSERT INTO message_template(name, content) VALUES(#{name}, #{content})
</insert>
<update id="update" parameterType="com.example.dto.MessageTemplateDTO">
UPDATE message_template SET name = #{name}, content = #{content} WHERE id = #{id}
</update>
<delete id="deleteById" parameterType="java.lang.Long">
DELETE FROM message_template WHERE id = #{id}
</delete>
</mapper>
```
4. 定义Service接口和实现类
```
public interface MessageTemplateService {
List<MessageTemplateDTO> findAll();
MessageTemplateDTO findById(Long id);
void save(MessageTemplateDTO messageTemplateDTO);
void update(MessageTemplateDTO messageTemplateDTO);
void deleteById(Long id);
}
@Service
public class MessageTemplateServiceImpl implements MessageTemplateService {
private final MessageTemplateMapper messageTemplateMapper;
public MessageTemplateServiceImpl(MessageTemplateMapper messageTemplateMapper) {
this.messageTemplateMapper = messageTemplateMapper;
}
@Override
public List<MessageTemplateDTO> findAll() {
return messageTemplateMapper.findAll();
}
@Override
public MessageTemplateDTO findById(Long id) {
return messageTemplateMapper.findById(id);
}
@Override
public void save(MessageTemplateDTO messageTemplateDTO) {
messageTemplateMapper.save(messageTemplateDTO);
}
@Override
public void update(MessageTemplateDTO messageTemplateDTO) {
messageTemplateMapper.update(messageTemplateDTO);
}
@Override
public void deleteById(Long id) {
messageTemplateMapper.deleteById(id);
}
}
```
5. 定义Controller
```
@RestController
@RequestMapping("/messageTemplate")
public class MessageTemplateController {
private final MessageTemplateService messageTemplateService;
public MessageTemplateController(MessageTemplateService messageTemplateService) {
this.messageTemplateService = messageTemplateService;
}
@GetMapping
public List<MessageTemplateDTO> findAll() {
return messageTemplateService.findAll();
}
@GetMapping("/{id}")
public MessageTemplateDTO findById(@PathVariable Long id) {
return messageTemplateService.findById(id);
}
@PostMapping
public void save(@RequestBody MessageTemplateDTO messageTemplateDTO) {
messageTemplateService.save(messageTemplateDTO);
}
@PutMapping
public void update(@RequestBody MessageTemplateDTO messageTemplateDTO) {
messageTemplateService.update(messageTemplateDTO);
}
@DeleteMapping("/{id}")
public void deleteById(@PathVariable Long id) {
messageTemplateService.deleteById(id);
}
}
```
阅读全文