zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Day1 Mybatis初识(一)详解编程语言

mybatis编程语言 详解 初识 Day1
2023-06-13 09:20:30 时间

将重复的,繁琐的代码实现封装,让程序员将更多的精力放在业务的理解和分析上。

框架的作用

提高开发效率

隐藏细节

三大框架SSH     SSM

1)  表述层:  用户交互  servlet  SpringMVC/Struts2

2)  业务逻辑层:业务处理  javabean/ejb   Spring

3)  数据持久层:数据库交互 jdbc  Mybatis/Hibernate

传统JDBC的不足

1)  四个参数的使用有硬编码(配置文件)

2)  statement的使用中有硬编码

3)  频繁打开和关闭连接(数据源(连接池))

Mybatis框架

MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。

Mybatis是一个优秀的ORM框架。

ORM:Object Relationship Mapping(对象关系映射) 

Mybatis不需要开发人员过多关注数据库的连接关闭,stmt对象的创建;着重关注sql。

关注映射: 输入参数  和 输出结果。

1) mybatis下载

apache ibatis前身。

google code  à Mybatis

github

2) https://github.com/mybatis/mybatis-3/releases

Mybatis的开发 1)配置文件  (xml)

a)xfg.xml:核心配置文件(全局配置文件)

   连接信息的配置(连接池),事务管理

b) mapper.xml:映射文件

2) SqlSessionFactory:session工厂 3)SqlSession:面向程序员的接口(增删改查) a) 创建java项目,导入jar

Day1 Mybatis初识(一)详解编程语言

b)配置核心配置文件(xml)

核心配置文件:

 !-- DTD:定义/约束 -- 

 !DOCTYPE configuration 

 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 

 "http://mybatis.org/dtd/mybatis-3-config.dtd" 

 !-- Mybtais核心配置文件:任何的地方都可以获取 -- 

 configuration 

 !-- environments:环境集合(mysql/oracle) 

 default:默认(环境的id) 

 environments default="development" 

 !-- environment:代表一个环境 

 id:唯一标识 

 transactionManager:事务管理器(管理事务) 

 type:jdbc 

 dataSource:数据源(连接池) 

 连接池:当项目启动,向数据库请求初始化连接数条连接放置在连接池中管理; 

 当连接的请求多于初始化连接数,此时会根据步长来增加连接数(创建连接); 

 最大不超过最大连接数,人就不够时需要根据超时时间进行等待; 

 当连接的请求远低于当前的连接数,此时会根据最小连接数释放相应的连接。 

 好处:减少了连接的频繁关闭。 

 缺点:连接需要占用资源 

 必须配置四个参数 driver url username password 

 流行的数据源:DBCP C3P0 DROID 

 type="POOLED"("池") 

 environment id="development" 

 transactionManager type="JDBC"/ 

 dataSource type="POOLED" 

 property name="driver" value="com.mysql.jdbc.Driver"/ 

 property name="url" value="jdbc:mysql:///bd1711"/ 

 property name="username" value="root"/ 

 property name="password" value="root"/ 

 /dataSource 

 /environment 

 /environments 

 !-- 映射器 -- 

 mappers 

 mapper resource="BookMapper.xml"/ 

 /mappers 

 /configuration 

mapper映射文件

 !DOCTYPE mapper 

 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 

 "http://mybatis.org/dtd/mybatis-3-mapper.dtd" 

 !-- 

 mapper:描述对象和记录之间的映射关系 

 namespace:隔离sql,在mapper代理时由特殊用法 

 mapper namespace="com.lee" 

 !-- 查询的映射: (Statement对象) 

 id:该标签的唯一标识 

 resultType:结果类型 (输出结果的映射) 

 #{}:代表占位符 

 parameterType:输入参数类型(输入参数的映射)(可省略) 

 select id="selectBook" resultType="entity.Book" 

 select * from book where bid = #{bid} 

 /select 

 /mapper 

测试代码

//加载配置文件为流 

 InputStream is = Resources.getResourceAsStream("Mybatis.xml"); 

 //创建SqlSessionFactory(加载) 

 SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is); 

 //核心接口(发送增删改查语句) 

 SqlSession session = ssf.openSession(); 

 Book book = session.selectOne("com.lee.selectBook", 1); 

 System.out.println(book); 

 //释放资源 

 session.close();
核心配置文件
 properties 

 !-- 1.配置(动态替换) 

 1.1 java的属性文件外部引入 resource="jdbc.properties" 

 1.2 property标签中配置 

 当两者冲突时,最终使用java的属性文件的配置。 

 properties resource="jdbc.properties" 

 !-- property name="driver" value="com.mysql.jdbc.Driver"/ -- 

 /properties 

 settings 

 !--2.settings 调整:影响整个Mybatis的行为 -- 

 settings 

 !-- 缓存总开关: 默认true,开启缓存 / false关闭缓存 -- 

 setting name="cacheEnabled" value="true"/ 

 !-- 延迟加载总开关: 默认false,默认是立即加载 / true延迟加载 -- 

 setting name="lazyLoadingEnabled" value="true"/ 

 /settings 

 typealiases 

 !-- 3.别名 

 typeAlias:单一类型起别名 

 type:需要设置别名的全限定名称 

 alias:别名 

 package:包 

 默认别名就是类型(首字母大小写均可) 

 typeAliases 

 !-- typeAlias type="entity.Book" alias="book"/ -- 

 package name="entity"/ 

 /typeAliases 

 typeHandlers: 

类型处理器 

 objectFactory:对象工厂 

 enviroment 

 environment id="development" 

 !-- 事务管理器: 

 JDBC: 和JDBC使用同样的提交和回滚策略 

 MANAGED:依赖于应用服务器上下文(context)的配置(必须在服务器上运行) 

 transactionManager type="JDBC"/ 

 !-- 数据源: c3p0,droid 

 UNPOOLED:请求时连接,完毕时关闭 

 POOLED:连接池 

 JNDI:依赖于应用服务器(在上下文配置数据源,然后在java获取上下文的引用从而获取数据源) 

 dataSource type="POOLED" 

 property name="driver" value="${db.driver}"/ 

 property name="url" value="${db.url}"/ 

 property name="username" value="${db.user}"/ 

 property name="password" value="${db.pwd}"/ 

 /dataSource 

 /environment 

 mappers 

 !-- 映射器 :作用 寻找映射文件,sql-- 

 mappers 

 !-- 1.相对于src映射文件的相对路径 -- 

 mapper resource="BookMapper.xml"/ 

 !-- 2.url:全路径 -- 

 !-- 3.class:使用mapper接口的class -- 

 !-- 4.package:注册整个包下所有的文件(mapper代理开发) -- 

 /mappers 
 !-- 1.使用二级缓存 -- 

 cache /cache 

 !-- 2.引用其他命名空间缓存 -- 

 cache-ref namespace=""/ 

 !-- 3.实现复杂的类型封装 -- 

 resultMap type="" id="" /resultMap 

 !-- 4.可被重用的语句块 -- 

 sql id="bookCols" 

 bid,bname,author,price 

 /sql 

查询: select (查询一个,查询所有,模糊查询,分页查询) 

 !-- 模糊查询 :缺陷 有sql注入的风险 / 但是使用不同字段作排序时必须使用 -- 

 select id="selectLike" resultType="book" 

 select * from book where bname like %${value}% 

 /select 

 !-- 分页查询 

 1.编写类 

 2.map 

 3.rowbounds 

 select id="selectByPage" resultType="book" parameterType="map" 

 select * from book limit #{startRow},#{length} 

 /select 

 select id="selectByPage2" resultType="book" 

 select * from book 

 /select 


insert id="insertBook" parameterType="book" useGeneratedKeys="true" keyProperty="bid" insert into book(bname,author,price) values(#{bname},#{author},#{price}) /insert insert id="insertBook2" parameterType="book" selectKey keyProperty="bid" order="AFTER" resultType="int" !-- select LAST_INSERT_ID() -- !-- select SEQ_BOOK.nextval from dual -- /selectKey insert into book(bname,author,price) values(#{bname},#{author},#{price}) /insert

Eclipse导入本地dtd约束

Day1 Mybatis初识(一)详解编程语言

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11141.html

cgojavamysqloraclexml