博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis.xml(理解的相对局限)
阅读量:7154 次
发布时间:2019-06-29

本文共 2497 字,大约阅读时间需要 8 分钟。

  hot3.png

1、mybatis将表的属性用resultMap表示

<resultMap id="BaseResultMap" type="com.model.TMarine" >

<id column="ID" property="id" jdbcType="INTEGER" />

<result column="ADDRESS" property="address" jdbcType="VARCHAR" />

<result column="AREA_ID" property="areaId" jdbcType="INTEGER" />

<result column="CONTACT" property="contact" jdbcType="VARCHAR" />

<result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" />

<result column="FAX" property="fax" jdbcType="VARCHAR" />

<result column="FIRST_LETTER" property="firstLetter" jdbcType="VARCHAR" />

<result column="IS_DEL" property="isDel" jdbcType="INTEGER" />

<result column="IS_MODABLE" property="isModable" jdbcType="INTEGER" />

<result column="IS_ORGAN" property="isOrgan" jdbcType="INTEGER" />

<result column="LEVEL_ID" property="levelId" jdbcType="INTEGER" />

<result column="MARINE_CODE" property="marineCode" jdbcType="VARCHAR" />

<result column="MARINE_NAME" property="marineName" jdbcType="VARCHAR" />

<result column="PHONE" property="phone" jdbcType="VARCHAR" />

<result column="POSTCODE" property="postcode" jdbcType="VARCHAR" />

<result column="UPDATE_TIME" property="updateTime" jdbcType="TIMESTAMP" />

<result column="PID" property="pid" jdbcType="INTEGER" />

</resultMap>

resultMap中的id标签,作为唯一表示。

 

2、套用sql,常将表的属性分隔。

<sql id="Base_Column_List" >

ID, ADDRESS, AREA_ID, CONTACT, CREATE_TIME, FAX, FIRST_LETTER, IS_DEL, IS_MODABLE,

IS_ORGAN, LEVEL_ID, MARINE_CODE, MARINE_NAME, PHONE, POSTCODE, UPDATE_TIME, PID

</sql>

<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >

select

<include refid="Base_Column_List" />

from t_marine

where ID = #{id,jdbcType=INTEGER}

</select>

3、#{},${} 的区别

#{} JDBC preparedstatement参数的占位符标志,可以防止sql注入

${} 仅仅是字符串替换,而且有sql注入的危险

prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率。  

createStatement不会初始化,没有预处理,没次都是从0开始执行SQL

4、<where></where>

有时查询有条件,有时没有条件,用where可以根据情况判断是否用where,并删除多余的and

5、<set></set>

用<set></set>根据判断,可以设定update具体修改哪些字段,而不需要全部修改,比如用户表里有creatTime表示添加时间并且有值,但是在修改的表单提交没有将creatTime添加进去,这样整体update就会将createTime变成空。使用<set>标签还可以自动去掉修改最后的逗号。

6、<trim></trim>

实例:

<trim prefix="(" suffix=")" suffixOverrides=",">

 

</trim>

在语句之前加入“(”,在末尾加入")",并去掉最后一个逗号。

7、resultMap 和 resultType 的区别

resultType和resultMap 均指返回类型,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。

个人理解:当你的数据只是想单纯的返回一个map,用resultType="java.util.HashMap",如果想返回一个对象或者一个对象的列表,resultMap="BaseResultMap",BaseResultMap是一个映射,查看1即明白。

转载于:https://my.oschina.net/WEguo/blog/1538857

你可能感兴趣的文章
7. Reverse Integer
查看>>
MySql错误处理(三)- 错误处理的例子
查看>>
Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解
查看>>
Linux多线程Pthread学习小结
查看>>
JVM性能调优入门
查看>>
关于BMP
查看>>
UML视频
查看>>
Jmeter性能测试 入门
查看>>
jmeter实现Http接口测试介绍
查看>>
iOS 九宫格的实现
查看>>
总结各种width,height,top,left
查看>>
CodeForces - 1029A.Many Equal Substrings
查看>>
BZOJ 1112 线段树
查看>>
vue之cli脚手架安装和webpack-simple模板项目生成
查看>>
python学习---装饰器
查看>>
不显示列表
查看>>
Quartz定时任务使用小记(11月22日)
查看>>
利用Excel办公软件快速拼接SQL
查看>>
学习javascript并解读JQuery
查看>>
P1120 小木棍 [数据加强版]
查看>>