




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter3 配置详解与动态SQL*课程回顾*1 MyBateis API接口2 利用Mapper接口实现开发3 MyBatis CRUD注解实现 *教学导航*1 MyBateis 核心配置文件2 映射文件详解3 动态SQL使用1、 MyBatis 核心配置文件SqlMapConfig.xml中的各配置节点如下顺序不能乱。1. properties(属性)2. settings(全局配置参数)3. typeAiases(类型别名)4. typeHandlers(类型处理器)5. objectFactory(对象工厂)6. plugins(插件)7. environments(环境集合属性对象)1. environment(环境子属性对象)2. transactionManager(事物管理)3. datesource(数据源8. mappers(映射器)# properties 属性 #作用:将数据连接单独配置在perties中,只需要在SqlMapConfig.xml中加载perties的属性值,在 SqlMapConfig.xml中就不需要对数据库连接参数进行硬编码。数据库连接参数只配置在perties中,方便对参数进行统一管 理,其它xml可以引用该perties。在classpath下定义perties文件:jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:/localhost:3306/mybatis?characterEncoding=utf-8jdbc.username=rootjdbc.password=root在SqlMapConfig.xml中加载perties: !- - 注意:如果发现perties(所有的properties文件)中有key相同的属性,那么后面的会将其覆盖。# settings #mybatis框架运行时可以调整一些运行参数。比如,开启二级缓存,开启延迟加载等等。全局参数会影响mybatis的运行行为。设置懒加载的全局参数官方提供的全局参数示例 # typeAiases(类型别名)#别名,为了在映射文件中更方便的编写输入参数类型和输出结果类型,比如直接编写int,就是在这里设置。可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。例如:在核心配置文件中添加如下配置:是在标签下 在mapper.xml的引用形式: SELECT * FROM USER WHERE id=#value mybatis默认支持的别名:别名映射的类型别名映射的类型_byte byte long Long _long long short Short _short short int Integer _int int integer Integer _integer int double Double _double double float Float _float float boolean Boolean _boolean boolean date Date string String decimal BigDecimal byte Byte bigdecimal BigDecimal mapMap# typeHandlers #mybatis中通过typeHandlers完成jdbc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义。mybatis支持类型处理器举几个例子:类型处理器Java类型JDBC类型BooleanTypeHandlerBoolean,boolean任何兼容的布尔值ByteTypeHandlerByte,byte任何兼容的数字或字节类型ShortTypeHandlerShort,short任何兼容的数字或短整型IntegerTypeHandlerInteger,int任何兼容的数字和整型LongTypeHandlerLong,long任何兼容的数字或长整型FloatTypeHandlerFloat,float任何兼容的数字或单精度浮点型DoubleTypeHandlerDouble,double任何兼容的数字或双精度浮点型# objectFactory #对象工厂不用管,因为到时候肯定和spring整合,都会由spring来管理,到与spring整合的时候就会讲解到对象工厂的了。# environments #MyBatis 可以配置多种环境。这会帮助你将 SQL 映射应用于多种数据库之中。但是要记得一个很重要的问题:你可以配置多种环境,但每个数据库对应一个 SqlSessionFactory。所以,如果你想连接两个数据库,你需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,你就需要三个实例,以此类推。# mappers映射器 #mappers:加载映射文件四种方式来加载1、 使用相对路径,相对于项目底下。,比如config下的sqlmap下的user.xml2、使用绝对路径,比如d盘下的xx,不会用这种3、mapper class=cn.itcast.mybatis.mapper.UserMapper/使用mapper接口类路径注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。4、注册指定包下的所有mapper接口 注意:此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下# C3P0连接池 #项目需要引用c3p0连接池,需要导入相关jar包,设置方式跟Hibernate中设置类似。注释掉type=POOLED的数据源,换成type=org.mybatis.c3p0.C3P0DataSourceFactory的数据源这样就使用c3p0了。 2、 MyBatis映射文件全局配置文件中内容的讲解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射、输出映射、动态sql这几个知识点进行说明。Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis实现数据库操作的核心。# 输入映射 #输入映射parameterType:配置statement中输入参数的类型。有四种1、传递简单类型,八大基本类型,比如int类型findUserById:根据id进行查询对应user,那么传入的就应该是int类型的值。所以使用别名int来映射传入的值(可以参考第一章的内容)select * from user where id = #id2、传递pojo(代表正常的对象,比如user的javabean对象)insertUser:就是传递的User这个对象。select LAST_INSERT_ID() insert into user(id,username,sex,birthday,address) value(#id,#username,#sex,#birthday,#address) 注意:在使用pojo之后,#xxx。 xxx表示pojo对象中的属性名。3、传递包装pojo(其中放置的可为集合,对象引用等)public class QueryVo /也可以放集合、或别的属性/下面是User 的引用private User user;public User getUser() return user;public void setUser(User user) this.user = user;映射文件中queryUserList的定义配置SELECT * FROM user where username like %$user.username%注意:user.username这个属性的获取,因为UserQueryVO是一个包装pojo,其中有user的引用。而user中又有username的属性,那么这样一层层通过.操作符取过来用即可。4、 传递hashmap 前面的会了,要理解这个不难。传递HashMap输出将输出的字段名称作为map的key,value为字段值。 select * from user where id=#id and username like %$username%上边#id中的id和%$username%中的username是hashmap的key,他们的value就是我们要取的内容# 输出类型 #也就是查询出来的结果的列名需要对应我们编写的输出映射类型中的属性名,如果不匹配,则不能完成映射,那么查询出来的结果也不能如愿的放入对应的对象中去。1、输出简单类型 select count(1) from user输出简单类型必须查询出来的结果集有一条记录,最终将第一个字段的值转换为输出类型。2、输出pojo对象(第一章的内容)select * from user where id = #id3、输出pojo列表(第一章的内容) select * from user where username like %$value% # resultMap #resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到pojo对象中。resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。1、Mapper.xml定义 select id id_,username username_,birthday birthday_ form user使用resultMap指定上边定义的map。2、 定义resultMap由于上边的mapper.xml中sql查询列和Users.java类属性不一致,需要定义resultMap:userListResultMap将sql查询列和Users.java类属性对应起来:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个。Property:表示User类的属性。Column:表示sql查询出来的字段名。Column和property放在一块儿表示将sql查询出来的字段映射到指定的pojo类属性上。:普通结果,即pojo的属性。3、 Mapper接口定义public ListfindUserListResultMap() throws Exception;3、 动态SQL使用通过Mybatis提供的各种动态标签实现动态拼接sql,使得mapper映射文件在编写SQL时更加灵活,方便。常用动态SQL标签有:if、where、foreach1、if和whereif标签用来判断 它里面有test属性,可以输入判断语句where标签,处理条件是否输入正确。如果没有条件,就把自己干掉,2、foreach注意:foreach中的open
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 换热站运营管理制度
- 服装店公司管理制度
- 核酸采样屋管理制度
- 检修工考核管理制度
- 检测设备室管理制度
- 模拟教学室管理制度
- 母婴实训室管理制度
- 比亚迪离职管理制度
- 民房第三方管理制度
- 气源头调度管理制度
- 手术患者深静脉血栓预防措施
- 2025年共青团入团积极分子考试测试试卷题库及答案
- 2.2自然保护区与生态安全课件高二地理下学期鲁教版(2019)选择性必修三
- 2021年贵州特岗教师招聘考试英语真题及答案
- 救护车驾驶培训
- 基层公共法律服务的困境与改进对策研究
- 残疾人电子商务培训
- GB/T 45148-2024数字文化馆资源和技术基本要求
- 提高处方合格率管理
- 云南教育强省建设规划纲要(2024-2035年)知识培训
- 山体护坡施工技术方案
评论
0/150
提交评论