mybatis Mapper中的配置问题

一、特殊字符的处理       

       我们将sql语句配置在mapper.xml文件中,sql中会存在>、<、>=或者<=等,这种情况,在xml文件中是校验不通过的,所以需要对配置中的sql进行处理,这里有两种解决方案:

  • 将这些字符替换成符合xml规范的字符,具体转义字符如下:

  • 将sql语句用<![CDATA[ ... ]]> 包裹,个人比较推崇这一个。

二、动态组装条件

      为了满足业务的需要,有些条件需要动态设置,比如如果某个条件为空,则不要在sql中增加该条件,可以通过以下配置进行解决:

<where>
    1==1
    <if test="param != null and param != ''">
        and p_param = #{param}
    </if>
    <if test="param2 != null and param2 != ''">
        and p_param2 = #{param2}
    </if>
</where>

mybatis的配置不存在else if,可通过以下配置:

<choose>
    <when test="param3 != null and param3 !=''">
        and p_param3 = #{param3}
    </when>
    <otherwise>
        ......
    </otherwise>
</choose>

三、#{}和${}的区别

      sql中使用#{param},会将该项替换成?,然后通过preparestatement设置成param的值;而${param}就会直接将该项直接替换成param的值, 当做字符串来处理。

四、mybatis的日志配置

控制mybatis是否打印sql语句以及参数等,在mybatis-config.xml中进行如下配置,则会打印sql等详细信息。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"classpath:/mybatis-3-config.dtd">

<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
</configuration>

通过如下配置,则主要依赖于log4j的配置,不会打印很详细的日志内容。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"classpath:/mybatis-3-config.dtd">

<configuration>
    <settings>
        <setting name="logImpl" value="LOG4J" />
    </settings>
</configuration>

五、mybatis+springmvc事务

通过注解@Transactional设置事务,手动回滚通过TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();来完成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值