MyBatis3.X实战之删除语法和转义字符使用

delete删除语法

需求:删除某个时间段之后 且金额大于 10元的数据

<delete id="deleteByCreateTimeAndPrice" parameterType="java.util.Map">
 delete from video where create_time <![CDATA[ > ]]> #{createTime} and price <![CDATA[ >= ]]> #{price}
</delete>

为什么要转义字符:
由于MyBatis的sql写在XML里面, 有些sql的语法符号和xml里面的冲突
大于等于 <![CDATA[ >= ]]>
小于等于 <![CDATA[ <= ]]>

代码:

VideoMapper.java

public interface VideoMapper {
    /**
     * 删除
     */
    int deleteByCreateTimeAndPrice(Map<String,Object> map);
}

VideoMapper.xml

 <delete id="deleteByCreateTimeAndPrice" parameterType="java.util.Map">

        delete from video where create_time <![CDATA[ > ]]> #{createTime,jdbcType=TIMESTAMP} and price <![CDATA[ < ]]> #{price,jdbcType=INTEGER}
    </delete>

测试代码:

public class SqlSessionDemo {
    public static void main(String [] args) throws IOException {

        //读取配置文件
        String resouce="config/mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resouce);

        //构建Session工厂
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        //获取Session
        try(SqlSession sqlSession=sqlSessionFactory.openSession()){

            VideoMapper videoMapper=sqlSession.getMapper(VideoMapper.class);
            
            Map<String,Object> map=new HashMap<>();
            map.put("createTime","2019-12-24 22:14:00");
            map.put("price",8830);
            int rows=videoMapper.deleteByCreateTimeAndPrice(map);
            System.out.println(rows);
        }
    }
}

测试截图:

删除前:
在这里插入图片描述
删除后:
在这里插入图片描述
在这里插入图片描述


版权声明:本文为weixin_43432438原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。