mybatis 简介与基本使用

**

mybatis

**
mybatis是一个数据持久层的框架;
框架:就是一个软件的半成品;一个框架中包含了多个组件;
表现层->控制层->业务层->持久化层->db
jsp struts2 spring hibernate
easyUI sprintMVC mybatis
extjs
mybatis
mybatis是一个持久层的框架,它支持动态sql,存储过程以及高级映射;它几乎消除了所有的jdbc代码;
第一个mybatis程序;
导包;(框架包及依赖包)
写配置文件;(核心配置文件 及映射文件)
在src下的某个包中编写Configuration.xml
在src下的包中编写DutyMapper.xml
编写测试代码;
SqlSession:会话(我们的程序和mybatis之间的会话)
项目的分层
jsp:表示层;
servlet:控制层;
service:业务层(包含多个数据操作,在此层控制事务);
dao:数据访问层(对数据库的原子操作;CURD)
dao的实现方式;
dao类 + 映射文件
dao接口+ annotation配置;
1.在接口的每个方法上加入对应的注解(sql语句)
2.在核心配置文件中,通过package标记注册接口所在的包;
dao接口+xml配置;
xml映射文件中的每个sql的id与接口中的方法一致,参数及返回值一致;
xml映射文件的namespace应与接口名相同(包含包名)
在核心配置文件中,注册该xml映射文件

PS:2和3都可以生成dao 对象;
2和3方式中可以通过 SqlSession.getMapper(接口类型)方法来获得生成的dao;

Mybatis的配置文件 ;

核心配置文件 :只有一个
映射文件 :多个,通常每个表对应一个
核心配置文件
一个mybatis工程只需要一个核心配置文件 ,这个配置文件中包含
mybatis的一些通过配置;例如:
数据库连接;*
加载的映射文件;*
通用选项配置;
类的别名等;
核心配置文件中的配置项
properties;
setting:设置(功能开关)
typeAliases:类型的别名
environments:环境配置:
数据库连接信息;数据库连接池;
事务处理

数据库处理的步骤
1.打开连接;
2.操作数据库
3.断开连接;
log4j
这是一个使用最广泛的日志处理组件;
目前,基本所有的框架都支持log4j
使用方法:只需要将定义好的log4j.properties文件放置到src的根目录即可;

映射文件的编写;
select 标记:用来定义查询语句;
属性:id:语句的唯一标识;
resultType:返回值的类型,如果是一个集合,这个值代表集合中的类型;map
parameterType:参数类型,最多有一个(如有多个,可封装到vo或map)
StatementType:执行sql语句的接口类型,有三个可选值 STATEMENT,PREPARED,CALLABLE,默认是PREPARED

insert标记
作用:用于插入;
获得生成的主键的方式:
如果数据库本身支持自动增长,则可以使用insert标记的useGeneratedKeys和keyProperty属性;
如果数据库本身不支持,可以使用selectKey子标记来获得主键值;

select max(accountid)+3 from account

update和delete (没有特殊的属性)
sql标记
用于包含一些重复使用的sql片断;通过include标记可以引入它;

select accountid,name,remain from account

   <include refid="select"/>

空值的处理
#{property,javaType=int,jdbcType=NUMERIC}
#{name,javaType=string,jdbcType=VARCHAR}
与数据库及驱动有关;如果数据库不允许,则可以使用此方式插入空值;
字符串替换
;vomapresultMapid,type使id,result,collection,associationselect使resultMap,(resultMapid) 和 #有什么区别?
:orderby {name}时使用;但它会引发sql注入的风险;因此这个值最好避免由用户直接输入;
#{}:用来给ps赋值;
多个参数;
可以在dao接口中为每个参数增加一个@Param注解,这样,在映射文件中就可以通过注解上的名称来获得多个参数;例如;
public void insert(@Param(“name”) String name,@Param(“a”) int remain);
多对一映射;

可用于一对一,和多对一;
作业要求;
一对多表的CURD;
Jquery(ajax)->JSP->JSTL/EL->Servlet>service->dao->mybatis->(mysql/oracle)
动态Sql
sql语句不是固定的,有时需要根据用户的请求,动态生成不同的sql语句,通过mybatis的一些标记可以有效的解决这类问题;
if,where,trim,choose,foreach
if:用来判断某个表达式是否成立


choose:也是用也判断,只是增加一个 else项;
where:条件标记,用它可以动态的删除多余的and ,or,where
set:用来执行update语句的动态标记,用它可以删除后缀,号;
trim:可以删除任何前缀及后缀
四个属性:
prefix:增加前缀
suffix:增加后缀
prefixOverrides:去掉第一个符号
suffixOverrides:去掉最后一个符号;
foreach:用于循环
collection:需要迭代的集合,List类型使用list,数组类型使用array,
item:遍历到的当前元素;
open:前缀
close:后缀
seperator:分隔符
index:索引

你可能感兴趣的:(框架,mybatis)