mybatis 简介与基本使用

    xiaoxiao2025-01-10  7

    **

    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:索引

    转载请注明原文地址: https://ju.6miu.com/read-1295347.html
    最新回复(0)