JDBC与Mybatis区别

JDBC与Mybatis

1.JDBC是什么?

java data base connectivity java数据库连接,是java连接数据库的标准,由sun公司提供的一组类和一组接口,由给个数据库厂商提供实现类
JDBC与Mybatis区别_第1张图片

2.JDBC的执行流程?
//贾琏欲执事
try{
1.加载注册驱动
Class.ForName("com.mysql.jdbc.Driver")
2.获取连接对象
Connection con = DriverManager.getConnection("jdbc:mysql:///jdbcdemo", "root", "admin");
3.获取语句对象,给Sql语句设置值(即给问号设置值)
PrepareStatement ps = con.PrepareStatement(sql);
ps.setString(1,"刘")
4.执行语句
con.executeUpdate();//增删改用这个
con.executeQuery();//查询用这个 
}
catch(Exception e){
    e.printStackTrace();
}finally{
5.释放资源,先开后闭原则
ps.close();
con.close();
}
3.JDBC的事务管理

JDBC与Mybatis区别_第2张图片

4.Statement 和 PreparedStatement的区别

​ PreparedStatement的优点:

​ 1.更好的可读性,可维护性.

​ 2.prepareStatement()会先将SQL语句发送给数据库预编译。PreparedStatement会引用着预编译后的结果。可以多次传入不同的参数给PreparedStatement`对象并执行。减少SQL编译次数,提高效率。

​ 3.更安全,可以防止 SQL 注入的问题

5.Mybatis是什么?

Mybatis是一个半成品开源框架,主要是对JDBC 进行封装,也是对数据库的CRUD

6.Mybatis的执行流程?

1.书写主配置文件mybatis-config.xml,配置环境****,连接Mysql数据库的,指定事务管理,Java的JDBC,控制事务的提交与回滚,dataSource是连接源配置,POOLED是JDBC连接对象的数据源连接池的实现,其中还要映射mapper文件
2.获取Sqlsession对象,将该对象提取到MybatisUtil工具类中,并将获取工厂对象放到静态代码中,然后提供一个公共的访问方法,这一步底层会调用defaultSqlsessionFactory中的方法,帮我关闭io流了
3.获取Sqlsession对象,这一步底层已经帮我们开启了事务
4.开启事务,如果事务开启失败,则底层会帮我们回滚事务
5.关闭资源

7.Mybatis与JDBC相比有什么优势?

1.sql语句与java代码分离

2.对结果集的映射,mybatis会帮我们将数据进行封装

3.mybatis底层用到了连接池,不用每次都从数据库获取以及关闭资源,节省资源

4.动态sql语句方便,如果是传统的JDBC要进行关键字查询时需要写多条代码

你可能感兴趣的:(java,mybatis,mysql,jdbc)