MyBatis起别名、resultMap、keyProperty


实体起别名

1.给实体类的权限定名取别名  (mybatis-config配置文件)
    com.lhl.demo1.Person        别名="Person"

    <typeAliase>
        <typeAlias type="实体的全类名" alia="别名"></typeAlias>
     </typeAliase>

2.Mapper使用实体类名
    resultType="Person"

MyBatis参数绑定的底层原理

1.默认mapper文件绑定  #{xxx}
    底层使用的PreparedStatement对象
    使用的是SQL的?站位绑定,预编译
    优点:
        预编译,防止sql注入、相对效率高一点
    缺点:
        只能绑定数据值   sql关键字、列、非数据无法绑定

2.使用sql字符串拼接绑定参数  ${xxx}
    优点:可以绑定任何内容
    缺点:sql注入

 将对象插入数据库后,绑定id

目的:
    将insert插入的user对象,id赋值添加的id
思路:
    1.发送select 序列 from dual的sql
    2.通过结果集获得id
    3.将id绑定在参数的urer对象的id属性中

MyBatis插入数据绑定id
    <insert id="insert" parameterType="实体类型">
        <!--在insert语句之前,执行select序列的sql,为了给参数的id属性绑定值-->
        <selectKey order="BEFORE" resultType="java.lang.String" keyProperty="sql的执行结果绑定给参数的实体的那个属性  id">
          select seq_user.nextval from dual
     </selectKey> insert into t_user values(?,?,?) </insert>

 查询关系映射

一、resultType

二、使用resultMap定义映射关系
    <!--
        1.列   属性
        2.最终封装的对象类型
    -->
    <resultMap id="PersonMap"  type="实体对象">
         <!--id:主属性-->
        <id property="属性"  column="列"></id>
        <!--其他列属性-->
        <result property="属性" column="列"/>
        <result property="name" column="name"*>
    </resultMap>

<!--查询功能-->
    <select id="selectById" parameterType="java.lang.Integer" resultMap="PersonMap">
    </select>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM