1、MyBatisMyBatis框架框架本章任务本章任务MybatisMybatis简介简介MybatisMybatis开发环境搭建开发环境搭建Mybatis Mybatis 开发步骤开发步骤MybatisMybatis配置文件配置文件MyBatis简介简介Mybatis:是一个ORM框架。它支持普通SQL查询,存储过程,高级映射。是Apache组织推出的一个开源免费的ORM框架。ORM ORM框架:框架:Hibernate,Mybatis,JPA 实现的机制:实现的机制:使用简单的XML或注解用于配置和原始映射,将接口和Java的PoJos映射成数据库中得记录。MyBatis开发环境搭建开发环境
2、搭建 Mybatis开发环境搭建1)导入jar包|Mybatis jar包 mybatis-3.1.0.jar|optional(第三方jar包)|asm-xxx.jar|cglib-xxx.jar|commons-loggin-xxx.jar|log4j.xxx.jar|slf4j-api-xxx.jar|slf4j-log4j12-xxx.jar 2)连接数据库的配置文件 文件名:随意,默认使用(configuration.xml)位置 :随意放置。文件内容:dtd头文件 标签 MyBatis开发环境搭建开发环境搭建 第三步:建立POJOs的映射文件文件名:随意,默认:java类名+Map
3、per。文件位置:随意,一般和java实体类放在同一目录下。文件内容:引入dtd映射文件。MyBatis开发步骤开发步骤MyBatisMyBatis开发步骤:开发步骤:第一步:配置configuration.xml文件 evnironmentsevnironments:是为开发提供一个默认的环境。配置文件中:代码:Session session=new SessionFactory().builder(reader);environmentenvironment:指的是Mybatis提供了多种运行环境(开发环境,测试环境)。配置文件中:代码:Session session=new Sessio
4、nFactory().builder(reader,”development”);注意:一个数据库只能对应一个SessionFactory transactionManagertransactionManager:typetype属性值如下:属性值如下:JDBC:简单的使用了JDBC的提交和回滚。它依赖从数据源获得的连接来 管理事务的范围。MANAGED MANAGED:它从来不会提交或回滚一个连接,而会让其他容器来管理事务整个的 生命周期。它从来不提交或回滚一个连接。而它会让容器来管理事务整个生命周期。默认情况下它会关闭连接。一些容器并不希望这样,因此如果你需要在连接中停止它,将closeC
5、onnection属性设置为false。MyBatis开发步骤开发步骤 dataSource:typedataSource:type属性的值属性的值UNPOOLEDUNPOOLED:数据源的实现是每次被请求时简单打开和关闭连接。适用于简单的程序。包含属性:driver,url,username,password,defaultTransactionIsolationLevel driver,url,username,password,defaultTransactionIsolationLevelPOOLEDPOOLED:JDBC连接对象的数据源连接池的实现。节约创建和认证时间。POOLED包
6、含了UNPOOLED的所有属性还有自己的属性 poolMaxmimumActiveConnectionspoolMaxmimumActiveConnections:在任意时间存在的活动连接数。(也就是正在使用的)默认值10.poolMaxmimuIdleConnectionspoolMaxmimuIdleConnections:在任意时间存在空闲的连接数量 poolMaximumCheckoutTime:在被强制返回之前,池中连接被检查的时间。默认值:20000毫秒(也就是20秒)注意:以上这些属性放置在dataSource子标签的property 中,作为 name属性的值。把属性对应的值放
7、置在value中。MyBatis开发步骤开发步骤 mappers:关联所有实体映射文件标签。mapper :用来书写某一个实体映射文件标签 关联方式两种:1)相对路径相对于classpath的路径。2)url路径 MyBatis开发步骤开发步骤第二步:创建SessionFactory SessionFactoryBuilder:建造SessionFactory工厂 SessionFactory builder(Reader);SessionFactory builder(Reader,String);SessionFactory builder(Reader,Properties);Sessi
8、onFactory builder(Reader,String,Properties);SessionFactory builder(InputStream);SessionFactory builder(InputStream,String);SessionFactory builder(Reader,Properties);SessionFactory builder(Reader,String,Properties);builder方法中得String参数和environment标签有关联。假设不想使用默认的环境 configuration.xml:代码中:调用:builder(Read
9、er,String)builder(Reader,String,Properties)builder(InputStream,String)builder(InputStream,String,Properties)注意:只需把以上方法中得String类型的参数替换成environment属性id的值即可。MyBatis开发步骤开发步骤 builder方法中得Properties类型的参数和Configuration.xml文件的 properties标签和dataSource标签有关联。数据库连接字符串的配置方式:1.1.手动加载手动加载properties和在mybaties中配置data
10、Source的标签 1)myBaties.xml配置 2)书写properties配置文件 注意:properties中的配置文件的key必须和mybaties.xml中得$key保持一致。3)手动加载properties private static Properties pro=new Properties();static String path=/com/zhongxin/mybaties/test/param.properties;InputStream is=Test2.class.getResourceAsStream(path);MyBatis开发步骤开发步骤static St
11、ring path=/com/zhongxin/mybaties/test/param.properties;InputStream is=Test2.class.getResourceAsStream(path);try pro.load(is);catch(IOException e)/TODO Auto-generated catch blocke.printStackTrace();4)调用方法:SqlSessionFacotryBuilder SqlSessionFactory builder(InputStream,Properties);2.2.自动加载自动加载propertie
12、s properties 1)mybaties.xml中配置properties标签:MyBatis开发步骤开发步骤 2)mybaties.xml中配置dataSource标签:3)书写properties配置文件 注意:properties中的配置文件的key必须和mybaties.xml中得$key 保持一致。4)调用方法:SqlSessionFacotryBuilder SqlSessionFactory builder(InputStream,Properties);3.3.混合加载混合加载:1)mybaties.xml中配置properties标签:MyBatis开发步骤开发步骤 2
13、)书写properties配置文件 注意:properties中的配置文件的key必须和mybaties.xml中得$key 保持一致。3)手动加载properties配置文件:private static Properties pro=new Properties();static String path=/com/zhongxin/mybaties/test/param.properties;InputStream is=Test2.class.getResourceAsStream(path);try pro.load(is);catch(IOException e)e.printSta
14、ckTrace();MyBatis开发步骤开发步骤 4)设置value pro.setProperty(String key,String value);5)调用方法:SqlSessionFactoryBuilder SqlSessionFactory builder(InputStream,Properties);注意:加载优先级:1)mybaties.xml中得标签的属性值 2)加载properties文件中的配置信息,它会覆盖标签中定义的属性值 3)properties手动设置的的配置信息,它会覆盖properties配置文件中得属性值第三步:创建Session SessionFactory:打开Session与数据库的会话 Session openSession();Session openSession(boolean);