mybatis框架知识点

标题Mybatis总结

## 标题Mybatis:是什么
	是一款非常优秀的基于Java编写的封装JDBC操作的半自动化ORM持久层框架
	
## 标题Mybatis:作用
	实现数据库的CRUD操作
	
## 标题Mybatis:为什么使用
	    原JDBC操作数据库存在的问题
	  	数据库连接池重复创建和销毁,浪费资源 ====>数据库连接池
		存在很多硬编码,数据库连接四要素,SQL语句,输入参数,解析结果====>配置文件

标题Mybatis:使用步骤

	## 标题ORM + 数据库连接(SqlMapConfig.xml) + SqlSession
    	XML
		>R:创建数据库表,创建单表,多表(一对一,一对多,多对一,多对多)
		>O:创建模型类
			1.private声明属性
			2.类型使用包装类型
			3.实现setter和getter方法
			4.对一模型类属性的声明,对多模型类集合属性的声明
		>M:映射文件
			输入映射、SQL语句、输出映射
			
				
					
					
					
						
						
						
					
					
						
						
						
					
				
				
				
					
						获取主键的SQL:select last_insert_id()|select uuid()
						
					
					insert的SQL语句
				
				
					update的SQL语句
				
				
					delete的SQL语句
				
				
				
				
				 
				
				
					
				  
			
		>数据库连接SqlMapConfig.xml
			1.properties 引入外部的配置文件,通过${key}使用
				
			2.settings	设置mybatis的系统配置
				
				
					
				
			3.typeAliases 为模型类起别名,方法映射文件编写
				
				
					
					 
				
			4.environments 数据库连接信息配置 后期交给spring管理
				连接池:POOLED UNPOOLED JNDI-->了解
			5.mappers 配置映射文件
				
					
					
					
						
				
		>SqlSession
			Resources:加载SqlMapConfig.xml主配置文件
				InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
			SqlSessionFactoryBuilder:
				构建SqlSessionFactory,使用构建者模式封装工厂的创建细节
				SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory:
				通过builder的build(in)方法来创建,使用工厂模式降低类之间的依赖
				SqlSessionFactory factory = builder.build(in);
			SqlSession:mybatis和数据库交互的桥梁,可以实现CRUD
				sqlSession.
					selectList() selectOne() insert() update() delete()
					commmit()  close() clearCache()
				sqlSession.getMapper(DAO接口.class);
					mapper代理方式开发,满足的规范
						namespace要和DAO接口的全类名保持一致
						statement的ID要和DAO接口的方法名保持一致
						statement的parameterType要和方法的参数保持一致
						statement的resultType|resultMap要和方法的返回值保持一致。
			缓存:一级缓存和二级缓存
				一级缓存:sqlSession级别 单例 数据不共享
				二级缓存: sqlSessionFactory级别 非单例 数据可以共享
	Annotation
		@Insert @Update @Delete @Select
		@Results(id="",value={
			@Result(id=true|false,property="",column=""),
			@Result(property="",column="",one=@One(
				select="",fetchType=FetchType.LAZY|EAGER
			),many=@Many(
				select="",fetchType=FetchType.LAZY|EAGER
			)),
		})
		@ResultMap(value="")

你可能感兴趣的:(mybatis框架知识点)