MyBatis[进阶]

大纲:

动态SQL查询

留言板

1. 动态SQL

1.1 <if>

我们都注册过一些信息,有的信息是非必填项,改如何实现呢?

这个时候就需要使⽤动态标签来判断了

⽐如添加的时候性别gender为⾮必填字段,具体实现如 下:

注解: 

 

 如果性别为空:

如果性别不为空:


xml:

和注解中script标签的内容是一样的

 

 

1.2 <trim> 

 

xml:

 

 

1.3 <where>

xml:

不适用<where>标签时

若所有条件为空:

则会多了where

可以通过where 1 = 1更改:


使用标签:

如果查询条件都为空,where标签会自动去除 where关键字.

也会去除最前面的and字符


注解:

 

 

1.4 <set>

 不使用<set>标签

使用:

 

1.5 <foreach>

 

 

 

<foreach>标签此时就相当于where id in (...) 的括号中的内容

 

1.6 <sql> <include>

把一些重复的sql可以提取出来,使用<sql>来标识,使用<include>使用 

<sql>::定义可重⽤的SQL⽚段

<include>:通过属性refid,指定包含的SQL⽚段

 


 

2. 留言板

2.1 数据库准备

 

2.2 前端

2.3 后端

 

MessageInfo:

@Data
public class MessageInfo {

    private Integer id;
    private Integer deleteFlag;
    private Date createTime;
    private Date updateTime;
    private String from;
    private String to;
    private String message;

}

MessageController:

@Slf4j
@RequestMapping("/message")
@RestController
public class MessageController {
    //private List<MessageInfo> messageInfos = new ArrayList<>();

    @Autowired
    private MessageService messageService;

    @RequestMapping("/publish")
    public Boolean publishMessage(MessageInfo messageInfo) {
        log.info("发表留言");
        //进行参数的校验
        if (!StringUtils.hasLength(messageInfo.getFrom())
                || !StringUtils.hasLength(messageInfo.getTo())
                || !StringUtils.hasLength(messageInfo.getMessage())){
            return false;
        }
        //添加留言
        messageService.addMessage(messageInfo);

        return true;
    }


    @RequestMapping("/getMessageInfo")
    public List<MessageInfo> getMessageInfo(){
        return messageService.getMessageInfo();

    }

}

MessageService:

@Service
public class MessageService {

    @Autowired
    private MessageMapper messageMapper;

    public void addMessage(MessageInfo messageInfo){
        messageMapper.insertMessage(messageInfo);

    }

    public List<MessageInfo> getMessageInfo(){
        return messageMapper.selectAllMessage();
    }
}

MessageMapper:

@Mapper
public interface MessageMapper {
    @Insert("insert into message_info(`from`,`to`,`message`) values(#{from},#{to},#{message})")
    public void insertMessage(MessageInfo messageInfo);

    @Select("select * from message_info where delete_flag=0")
    List<MessageInfo> selectAllMessage();
}

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值