Mybatis-概况

是什么

官网定义 http://www.mybatis.org/mybatis-3/
百科定义(维基百科) https://en.wikipedia.org/wiki/MyBatis
Github: https://github.com/mybatis/
同类技术有哪些:Hibernate,JDBC,JPA
对比同类的优缺点是什么:Hibernte是对象关系映射框架(ORM),将java类映射到数据库表。MyBatis是持久化框架-而不是ORM,将SQL语句映射到java方法。hibernate自动生成sql,mybatis支持复制sql;hibernate提供更高级别的缓存,mybatis支持的缓存低;hibernate使用存储过程困难,mybatis使用存储过程容易;
Mybatis使用场景:将java方法映射到sql语句;复杂查询,动态SQL,存储过程;需要维护SQL,在关系数据模型驱动。Hibernate:将java对象的实例映射到数据库中的实际行;由对象模型驱动。
学习前提(需要哪些基础知识):java,sql,xml....

总结:是一个java持久化框架,使用XML或注解,将对象与存储过程或SQL耦合在一起。mybatis不将java对象映射到数据库表,而将java方法映射到SQL语句。mybatis允许使用所以的数据库功能。mybatis简化了JDBC过程。支持动态SQL:使用Apache Velocity动态构建SQL语句。

MyBatis与Spring Framework和Google Guice集成。此功能允许用户构建没有依赖关系的业务代码。
MyBatis Generator IDEA插件的使用

为什么出现(为什么需要这个技术)
解决什么问题:简化持久化操作,对JDBC封装,简化数据库的连接,以及对sql的传参,将结果映射为java对象返回
没有这个技术前怎么做?使用JDBC进行数据的持久化 https://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html

XML SQL

井号:是预编译处理,解析传递进来的参数数据,以有效的防止SQL注入,提高系统安全性。一定是占位符

${}是字符串替换,对传递进来的参数原样拼接在SQL中。一定是值

xml映射配置文件properties语法:

<!-- 定义 -->
<properties>    <property name="username" value="root"/>    <property name="password" value="root"/></properties>

<!-- 使用 -- >

<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dateSource>

typeAliases:类型别名是为java类型命名一个短的名字。只用来减少类完全限定名的多余部分语法

<ad>
 <typeAlias alias="student" type="con.lixianghong.student.dao.Student"></typeAlias>
</ad>

动态SQL:

trim|where|set|foreach|if|choose|when|otherwise|bind。

if choose ,when,otherwise
和java中的switch类似语法:

<choose>    
    <when>.......</when>    
    <otherwise></otherwise>
</choose>

where语法:

<where>    
    <if>.....</if>    
    <if>.....</if>    
    <if>.....</if>
</where>

如果where元素没有做出想要的,可以使用trim元素来自定义

<trim prefix="WHERE" prefixOverrides="AND | ON">...

</trim>

set语法:只用于update,set元素可以被用于动态包含更新的列,而不包含不需要更新的。

<set>    
    <if test=""></if>    
    <if test=""></if>    
    <if test=""></if>
</set>

bind可以在bind语句中定义一个键值对,比如可以定义一个模糊查询的字符串:

"'%' + _parameter.getTitle() + '%'"

在select语句中使用键。

比如:

<select id="selectBlogsLike" parameterType="Blog" resultType="Blog">  
<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" /> 
 SELECT * FROM BLOG  WHERE title LIKE #{pattern}
</select>

接口绑定xml的方式:
一种是通过注解绑定,就是在接口的方法上面加上@Select@Update等注解,里面包含Sql语句来绑定。
另外一种就是通过xml里面写SQL来绑定,在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名

提升mybayis技能,javaAPI就是你所做的努力的地方。

mybatis缓存
一:cache机制缓存:是介于应用程序和屋里数据源之间的临时或永久存储空间。作用:是为了降低引用程序对屋里数据源访问的频次,从而提高应用的运行性能。结构:缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据mytabis缓存

一级缓存mybatis默认级缓存。
一级缓存是在sqlsession层面进行缓存的。
二级缓存二级缓存又称之为SessionFactory的缓存,由于SessionFactory的缓存。

二级缓存中应用场合:
1.很少被修改的数据
2.不是很重要的数据,允许出现偶尔并发的数据
3.常量数据。
二级缓存配置

<settinds>    
<settind name="cacheEnabled" value="ture">
</setting></settings>mapper.xml: <cache eniction ="FIFO" flushlnterval="60000" size="512" readOnly="true"/>

要使用二级缓存的方法 <useCache ="true"/>只有不要修改的商品,
可以放在二级缓存中。把查询语句单独建一个mapper.xml,设置为一个二级缓存。

插件的使用:mybatis-generator

转载于:https://www.cnblogs.com/supertrampai/p/11244737.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值