Mybatis笔记
写的很粗略,将就着看看
Mybatis是持久层的框架 内部封装了jdbc 使开发者只需要关注sql语句
使用OMR思想实现了结果集的封装 Object Relational Mappging 对象关系映射
把数据库表和实体类及实体类的属性对应起来
环境搭建
1.创建maven工程并导入坐标
2.创建实体类和dao的接口
3.创建Mybatis的主配置文件
在resources中创建SqlMapConfig.xml
4.创建映射文件
在resources中创建对应的映射文件(IUserDao.xml) 注意resulttype记得绑定
并在SqlMapConfig中绑定
5.在test创建MybatisTest注意文件位置要相同
1.读取配置文件
InputStream in= Resources.getResourceAsStream(“SqlMapConfig.xml”);
2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
3.使用工厂生产SqlSession对象
SqlSessionFactory fac tory=builder.build(in);
SqlSession session=factory.openSession();
4.使用SqlSession创建Dao接口的代理对象
List<User> users=userDao.findAll();
5.使用代理对象执行方法
for(User user:users){
System.out.println(user);
}
6.释放资源
session.close();
in.close();
注意mybatis中的映射配置文件位置必须和dao接口的包结构相同
映射文件的mapper标签中的namespace 必须是Dao接口类名
select标签中的if必须是对应的具体的方法名
SqlMapConfig.xml中的约束是
<?xml version="1.0" encoding="UTF-8"?>mapper.xml的约束
<?xml version="1.0" encoding="UTF-8" ?>Serializable是一个对象序列化的接口
一个类只有实现了Serializable接口才能被序列化
序列化:九十八对象状态转换成可保持或传输的格式的过程 与序列化相对的是反序列化 将流转换成对象
实质上是一个标识接口
实现了Serializable接口的类可以被ObjectOutputStream转换为字节流,同时也可以通过ObjectInputStream再将其解析为对象s
有两种实现方式
1.使用注解
1.创建表的对应类
2.创建用户接口
3.导入依赖
4.配置pom.xml文件
5.在resourse里写配置环境 并指定注解对应的用户接口
2.配置xml文件
1.创建表的对应类
2.创建用户接口
3.导入依赖
4.配置pom.xml文件
5.在resourse里写配置环境 并指定映射文件的位置
6.在resourse里写映射文件
配置环境
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的四个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql//localhost:"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
指定映射文件位置
指定注解
SqlSessionFactory
单个数据库映射关系经过编译后的内存镜像
SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得
SqlSessionFactory中只有一种方法openSession 用来创建SqlSession
SqlSession底层封装了jdbc连接 可以用sqlsession
也就是为了创建sqlsession 就要创建sqlsessionfactory 为了创建sqlsessionfactory就要创建sqlsessionfactorybuilder
也就是先创建SQLsessionfactorybuilder 然后创建工厂sqlsessionfactory 在创建工厂的时候导入配置文件 直到建造什么厂
最后工厂生产sqlsession 因为sqlsession底层封装了jdbc操作 所有可以直接使用
一级缓存
SqlSession对象的缓存
执行查询之后,查询的结果会存入到SQlsession提供的一块区域
该区域的结构是MAP 当我们查询同样的数据 会先去一级缓存中查找
注解一共只有四个
@Select @Insert @Update @Delect
可以用@Result这个注解来解决类和数据库表不对应的问题
配置文件方式
把环境的搭建写在SqlMapConfig中 这是总的配置 并且要在里面写明 哪些map.xml文件可以使用
就是每一个dao接口都对应一个map.xml文件 sql语句写在xml文件中
使用的时候
生成工厂的建造者 创建工厂 工厂创建Sqlsession对象 Sqlsession创造代理对象
采用注解
编写dao 和domain 配置SqlMapConfig.xml就可以 sql写在dao中
如果bean类和数据库没有一一对应 可以使用result注解