mybatis(一)

参考资料:http://www.mybatis.org/mybatis-3/zh/
参考资料完美了,看参考资料就行了,放一些知识点和踩坑经历吧

就我学习了不足两天的经验来说,需要配置的文件有如下几个:1.xml配置文件(最外面的那个)2.xml映射文件(写一堆sql的,也可以写在dao层)3.mapper(dao层)4.实体类

mybatis配置文件(eg:mybatis-config.xml)

位置:静态资源resources文件夹下,即父文件夹为resources
放个目录

  • configuration(配置)
    • properties(属性)
    • settings(设置)
    • typeAliases(类型别名)
    • typeHandlers(类型处理器)
    • objectFactory(对象工厂)
    • plugins(插件)
    • environments(环境配置)
      • environment(环境变量)
        • transactionManager(事务管理器)
        • dataSource(数据源)
    • databaseIdProvider(数据库厂商标识)
    • mappers(映射器)

具体看参考文档

xml映射文件

动态查询
choose,when,otherwise。类似于switch语句

<choose>
  <when ......>
      ......
  </when>
  <when ......>
      ......
  </when>
  <otherwise>          //类似于default
      ......
  </otherwise>
</choose>       

根据一部分字段删除一行

pre:

<delete id="deleteAppBy">
        DELETE FROM t_org WHERE
        <if test="id != null">
            id = #{id} AND
        </if>
        <if test="code != null and code.length()>0">
            code = #{code} AND
        </if>
        <if test="name != null and name.length()>0">
            name = #{name} AND
        </if>
        <if test="creator != null and creator.length()>0">
            creator = #{creator} AND
        </if>
        <if test="domain != null and domain.length()>0">
            domain= #{domain} AND
        </if>
           1=1
    </delete>

问题:若传入的类所有字段为空,则表被清空,非常危险。
原因:主要还是动态sql语句的问题,为了使其语法合理,末尾或开头必须加一项,可以是一定成立的,也可以是一定要查的,假设这里必须写成这样,则一定有问题,因为必须有一项成立。
解决:加必查项,或先查再按照主键删除。

update同理,话说真的写应该不会写成这样吧。

仅有 1 条评论
  1. qqq qqq

    http://client.arraynetworks.com.cn:8080/zh/troubleshooting

添加新评论