编程思想的培养?
1.什么时候需要传参?
add(对象 引用) update(对象 引用) delete(int id) delete(对象 引用) findById(int id)
2.什么时候需要返回值?
List<对象> findAll() , 对象 findById()
3.返回值改为int类型 传参+返回值一起写 谁执行效率高?
int delete(int id) 代码会多 相对来说 返回值为int 需要判断
void delete(对象) 这样效率好 代码少
总结: 增加 更新 删除 都是无返回值 编译速度块 执行效率高
mybatis框架的优缺点:
优点:
(1)与jdbc相比,减少了50%以上的代码量.
(2)最简单的持久化框架,小巧并简单易学
(3)SQL代码从程序代码中彻底分离,可重用
(4)提供xml标签 支持编写动态sql
(5)提供映射标签,支持对象与数据库的ORM字段映射
缺点:
(1)SQL语句编写工作量大,对开发人员有一定要求
(2)数据库移植性差
mybatis专注于SQL本身,是一个足够灵活的Dao层解决方案,适用于性能要求较高或者需求多变的互联项目
MyBatis的开发步骤:
1.下载mybatis.jar包并导入工程
2.编写MyBatis核心配置文件(configuration.xml)
3.创建实体类 --entity
4.dao层-SQL映射文件(mapper.xml)***
5.创建测试类
读取核心配置文件mybatis-config.xml
创建SqlSessionFactory对象,读取配置文件
创建SqlSession对象
调用mapper文件进行数据操作
提交事物(可选)
三者的作用域:
SqSessionFactoryBuilder
- 用过即丢,推荐作用范围:方法体内
SqlSessionFactory - 最佳作用范围:应用的全局作用域
- 生命周期与应用的生命周期相同
SqlSession - 线程级
- 一个request请求期间
面试题: jdbc hibernate mybatis 区别
jdbc: 优点: sql语句非常灵活 可移植性最强(相对来说).
缺点: 代码量多 冗余 java代码和sql耦合在一起 不利用代码维护.
hibernate: 优点:完全面向对象写法 利用HQL语句 完全脱离java代码和sql.
缺点: 全封装的框架 底层代码出问题 不好调试 可移植性差.
mybatis: 优点: 半封装的框架 脱离java代码和sql 可移植性非常强 应用非常灵活.
缺点:大量写sql语句(不包含java代码 ) 代码量多.
Mybatis框架中最重要的是就是子配置文件中的SQL语句
List返回值就是T 默认对象存到数组([])
List
主配置文件
-----默认的运行id
---运行id
---事务管理器配置
---数据源配置
子配置文件
-----添加
insert into dept(dname,loc) values(#{dname},#{loc})
----更新
update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}
-----删除
delete from dept where deptno=#{deptno}
数据库中字段和实体类中的属性不一致 写SQL要起别名 都是在子配置文件
第一种方法
select u.id u_id,u.name u_name,u.age u_age from user u
id name age数据库中字段名
u_id u_name u_age 是实体类中的属性
第二种方法
表关系
首先,建立三张表 user info book
建立实体类
public class Book {
private Integer b_id;
private String b_nanme;
private Info info;
public class Info {
private int i_id;
private String i_work;
public class User {
private int id;
private String name;
private int age;
//对一
private Info info;
// 对多
private Set book;
省略上面的set get方法以及toString方法
对一关系
在UserMapper.xml中
测试
@Test
public void testsel1() throws IOException{
//加载主配置文件
Reader reader=Resources.getResourceAsReader("mybatis-config.xml");
//创建SqlSessionFactoryBuilder
SqlSessionFactoryBuilder sessionFactoryBuilder=new SqlSessionFactoryBuilder();
//创建session工厂
SqlSessionFactory sessionFactory=sessionFactoryBuilder.build(reader);
//利用工厂开始session
SqlSession session=sessionFactory.openSession();
List list=session.selectList("user.findall");
System.out.println(list);
}
模糊查询语句
mybatis框架就是连接数据库,做增删改查,我觉得最重要的就是sql语句,只要sql语句正确,其他的问题也就都不是问题了,在ssm项目中都不用单独建立mybatis的配置文件,之间在Spring的配置文件中写就可以,Spring中可以很好的整合mybatis框架. 重点是mapper文件 重点是mapper文件重点是mapper文件