• mybatis


    mybatis 是持久层中的一种框架  用于管理SQL语句与数据库交互。  

    它是友友半自动的运行机制   需要自己来写SQL语句  是一种比较灵活 的框架   

    它将SQL语句与代码分离了  写在配置文件中 提高了可修改性 主要操作是为借口类配置相应的XML实现文档

    最具特点是缓存机制  满足缓存的条件  1 数据量小  2数据不容易发生改变  3数据并发关系小   缓存分为一级和二级

    一级缓存 对应一个session  调用同一个session得到的结果是同一个  

    二级缓存 对应的是session工厂  在二级缓存下引用的是同一个东西 但是 存储路径不同

    以<mapper namespace="配置路径">  来表示此XML实现的是哪一接口     主要操作为SQL语句的增 删 改 查  

    增加标签   id为实现的哪个接口方法   parameterType是传入的参数类型   useGeneratedKeys获取自增长  keyProperty将自增长赋值ID

    <insert id="实现接口的哪个方法" parameterType="传入的参数类型" useGeneratedKeys="true"  keyProperty="ID">

    SQL语句

    </insert>   

    其他大致相同   需要注意再有返回时resultType="返回类型"      

    resultMap标签 用于传入参数比较多的时候    是比较重要的一个标签  使用resultMap需要先设置键值对  

    <resultMap type="哪一个对象" id="为此标签取别名">
    <id property="id(属性的别名)" column="hid(对象中的属性)" javaType="java.lang.Long(属性的类型)"/>  
    <result property="name" column="hName" javaType="java.lang.String"/>
    <!-- 关联,关系   在对象中包含对象时   使用association 标签 -->
    <association property="别名" javaType="属性名">
    <id property="内置对象的别名" column="内置对象的属性" javaType="java.lang.Long(属性的类型"/>
    <result property="name" column="wName" javaType="java.lang.String"/>
    </association>
    </resultMap>

    配制好map 在标签中使用resultMap="配置MAP别名"

    <select id="实现接口的哪个方法" resultMap="配置MAP别名">
    SQL语句
    </select>

    为了更灵活的操作数据库 mybatis提供了7种动态拼接 

    foreach循环 

    <insert id="batchSaveGames" parameterType="java.util.List">
    insert into t_game (game_name,create_time) values

    在values后插入foreach标签 循环
    <foreach collection="传入参数" item="参数别名" separator=",(分割符号)"> 
    (#{g.game},#{g.createTime})
    </foreach>
    </insert>

    where 判断拼接

    <select id="countStusByParams" resultType="int">
    select count(s.id) from t_stu as s,t_class as c

    判断标签凭借  
    <where>
    <include refid="commonSql"></include>
    </where>
    </select>

    set-if

    在普通标签中嵌入下面这一段

    <set>
    <if test="u.userName != null">  判断标签 判断成功会运行标签里的内容
    user_name = #{u.userName},
    </if>

    <if test="u.sex != null">
    sex = #{u.sex}
    </if>

    </set>

    SQL 公共标签 需要先写好公共SQL语句

    <sql id="公共SQL的别名">

    SQL语句

    </sql>

    然后在其它标签中引用  include 将SQL嵌入

    <include refid="公共SQL的别名"></include>  

    prim 和where 作用一样  区别不大

    choose when 多选一 在choose中 以when判断 符合就嵌入包含语句  适用于多选一

    <choose>
    <when test="name != null"> 
    user_name like CONCAT('%',#{name},'%')
    </when>
    <when test="sex != null">
    and sex like CONCAT('%',#{sex},'%')
    </when>
    <otherwise>1=1</otherwise>
    </choose>

  • 相关阅读:
    简单验证码生成
    java编译器不匹配问题(java compiler level does not match the version of the installed java project facet)
    jQuery中$.fn
    ThreadLocal是什么?
    xmind 快捷键
    powerdesigner 连接oracle
    vs2019 System.FormatException:“Could not parse the JSON file.”
    svn常见操作
    sqlserve报错处理“数据类型 text 和 varchar 在 equal to 运算符中不兼容”
    数据库随机数据
  • 原文地址:https://www.cnblogs.com/waxlh/p/5686739.html
Copyright © 2020-2023  润新知