mybatis
mybatis简介
- mybatis是一种持久层框架,也属于ORM映射。前身是ibatis。
- 相比于hibernate,hibernate为全动自动化,配置文件书写之后不需要书写SQL语句,但欠缺灵活,很多时候需要优化
- mybatis为半自动化,需要自己写SQL语句,需要自己定义映射。增加了程序员的一些操作,但带来了设计上的灵活,并且也支持hebernate的一些特性,如延迟加载,缓存,映射等。
- 对数据库的兼容性比hibernate差。移植性不好,但可编写灵活和高性能的SQL语句
mybatis组成
- 核心对象:SqlSessionFactory SqlSession
- 配置文件:mybatis.cfg.xml相当于hibernate的hibernate.cfg.xml
- 多个类配置文件:user.xml相当于hibernate的映射类文件
- 支持注解配置
mybatis的配置
<dataSource type="POOLED">
<property name="driver" value="org.gjt.mm.mysql.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&allowMultiQueries=true"/>
<property name="username" value="root"/>
<property name="password" value="851117"/>
</dataSource>
其中设置URL时,加上allowMultiQueries=true表示允许一个语句块中添加多条SQL语句
mybatis.xml命名空间
设置方法:
- 在orm文件根目录下加入
<mapper namespace="user">
设置命名空间
作用:
- 更好地分类SQL语句块,更好维护
- 防治SQL语句块重名
调用:
在设置命名空间后,在响应的程序调用中,方可以使用“命名空间.语句块名”进行调用响应的sql语句。
#和$符号使用上的区别
- #在生成SQL时,对于字符类型参数,会拼装引号
$在生成SQL时,不会拼装引号,可用于order by之类的参数拼装
<select id="findByName" resultMap="userMap"> select * from t_user where u_userName like '%${userName}%' </select> List list = session.selectList("user.findByName",map);
CDATA标签
CDATA是不被解析器解析的文本。文本内的标签不会被当做标记,实体不会被展开。
语法:
<![CDATA[..内容..]]>