您的位置:首页 > 其它

mybatis自己容易忘记的东西1(仅适自己)

2017-08-12 16:24 302 查看
注:该文章只是针对自己在其他地方加强复习,没有参考意义。

一、jdbc的缺点

1.preparedstatement防止sql的注入

2.对sql是预编译的,数据库对第二回发的同样的预编译时直接从缓存中取就不用编译。

3.sql语句是硬编码,改动需要改动java文件,不利于维护。

4.preparedstatement设置的参数也存在硬编码问题.

二、mybatis执行

1.sqlMapConfig.xml(配置文件)->(创建会话工厂)sqlSessionFactory->(创建会话)sqlSession(操作数据库)

2.底层的内部是Executor在干活,也是一个接口,有两个实现,(默认执行器,缓存执行器)

3.Executor(封装参数)->MappedStatement(封装,sql,占位符)

4.map的xml以statement为单位管理sql

sqlMapConfig.xml

三、xml的部分结构

xxxmapper.xml

命名规则:表面+mapper.xml

开发调试阶段用debug,别用info

log4j.rootLogger=DEBUG, stdout

map.xml结构(部分)

id为映射结果集唯一标识

column数据库中的表字段

在同一个文件可以直接引语,否则就是命名空间.resultMap的Id

也可以是全类名

·····

#是占位符 可以防止sql的注入

表示sql的拼接,不加任何修饰{}%

insert最好用#,可以不用考虑java和数据库类型

<insert id=""  parameterMap="">
获取刚刚插入的自增主键值
<selectKey keyProperty="" order="before和after两个值" resultMap="int">
select last_insert_id()
</selectKey>
insert ....into...value...
keyProperty就是将主键设置到哪个属性
order相对于insert语句执行顺序,before和after

也可以通过uuid机制生成主键,可以防止数据库移植和其他表主键重复的问题
<selectKey keyProperty="" order="before和after两个值" resultMap="String">
select uuid()
</selectKey>

oracle没有自增主键,要通过序列实现自增主键
实现思路:先查询序列得到主键,将主键设置到user对象中,将user对象插入数据库
<selectKey keyProperty="id" order="before" resulrMap="">
select 序列.nextval() from dual
</selectKey>
insert ....into...value...
</insert>


如果引resultMap的为位置和resultMap的定义在同一个resultMap。xml中,直接使用ID,否则就是 命名空间.id

@Before注解,每次致谢@Test注解时先执行@before中的代码

sqlMapConfig

<package name=""/>

<typAliases>
<typeAliase type="" aliase="">
<package name=""/>
</<typAliases>>


like %${userCustom.userName}%

使用resultType时sql查询的列名(字段取得别名)要和指定的pojo属性名相同,指定相同属性方可映射成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐