Mybatis框架
Mybatis和Hibernate框架作用相同 都是ORM框架 对象关系映射 操作数据库
(JDBC数据库连接技术返回出来的结果集中 全是数据库字段 需要遍历 将每个字段找到对应类的属性)
通过ORM框架 直接找到对应(ying'she)实体类的对象
Mybatis 和 Hibernate的区别
mybatis框架是半自动的 需要我们自己写sql语句.
它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发。
hibernate框架是全自动 可以直接调用方法,无语句查询
Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。
搭建Mybatis框架
1.引jar包
链接: https://pan.baidu.com/s/14t3pwodfedFD-62gbHTP-g 密码: e9ur
2.配置mybatis的配置文件
Configuration.xml
3.创建实体类 设置对应的映射文件
mybatis框架 在映射文件中写sql语句
4.读取mybatis配置文件,获取session 调用方法
Reader reader = Resources.getResourceAsReader("Configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
我们在调用方法的时候,如果方法需要传参
我们就可以用传参的方法来执行
session.selectList("Teacher.selectByNameAndPwd") ------ 不传参的方式
在需要传参的时候 如果多个参数属于一个实体类 直接传个实体类对象就好了
如果多个参数没有关联, 传个Map就好了
也可以传的是一个参数(int,string等)
session.selectList("Teacher.selectByNameAndPwd", teacher) ------ 传参
当我们在调用方法的时候传参了 自然要在xml对应标签中接收
<select id="selectByNameAndPwd" parameterType="实体类的全类名" resultType="想将结果集映射到的实体类的全类名">
select * from teacher
where tName = #{传进来的参数对象的属性名}
and password = #{password}
</select>
注意: 如果传递的是map,占位符用 #{key} 就取出来了
配置映射文件时 数据库表中的字段名 和 实体类中的属性名 完全一致的时候 不需要配置对应映射,直接resultType实体类就好
<select id="selectAll" resultType="com.lanou.entity.Teacher">
select * from teacher
</select>