MyBatis使用注意事项

1. Mapper动态代理四项原则和注意事项

接口对应四项与xml文件中的键值对信息,一一对应即可,不用写实现类,就叫MyBatis的动态代理。

如果使用原始的DAO,要自己对其进行实现,而如果使用Mybatis的Mapper动态代理,就可以让Mybatis自动帮你实现DAO接口。

  1. 接口方法名需要与Mapper.xml调用的sql语句id一致
  2. 接口的形参类型需要与Mapper.xml的parameterType一致
  3. 接口的返回值需要与Mapper.xml的resultType一
  4. Mapper.xml的namespace要与接口的全包名一致

注意:Mapper动态代理开发中,selectList和selectOne是根据返回值来自动选择的

2. 多条件查询与条件多值查询

  • 多条件查询

    <if test = "id != null">
        id = #{id}
    </if>
    
  • 同一条件多值查询

    image-20211016142036775.png

    <select id="selectByIds" resultType="student" parameterType="list">
        SELECT * FROM student WHERE id IN (1,2,3);
    </select>
    <!--转化为-->
    <select id="selectByIds" resultType="student" parameterType="list">
        SELECT * FROM student 
        <where>
            <foreach collection="list" open="id IN (" close=")" item="id" separator=",">
                #{id}
            </foreach>
        </where>
    </select>
    

动态SQL小结

  • 条件标签
  • 条件判断的标签
  • 循环遍历的标签
  • 抽取SQL片段的标签
  • 引入SQL片段的标签

3. 打印MyBatis的sql语句

Log4J的功能很强大,能配合spring,mybatis 等等很多框架

  • 日常开发过程中,排查问题时难免需要输出MyBatis真正执行的SQL语句,参数,信息等信息.我们可以借助log4j的功能来执行信息的输出

  • 使用步骤

    1. 引入log4j

    2. 修改MyBatis核心配置文件

      <!--继承LOG4J日志信息-->
      <setting>
      	<setting name="logImpl" value="log4j"/>
      </setting>
      
    3. 在src下编写Log4J的配置文件

       ### 设置###
      log4j.rootLogger = debug,stdout,D,E
      
      ### 输出信息到控制台 ###
      log4j.appender.stdout = org.apache.log4j.ConsoleAppender
      log4j.appender.stdout.Target = System.out
      log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
      log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
      
posted @ 2021-10-17 10:55  蔚蓝的海洋  阅读(159)  评论(0编辑  收藏  举报