目录
JDBC、Hibernate和JPA、mybatis比较
Mybatis使用基本知识:
使用mybatis
JDBC、Hibernate和JPA、mybatis比较
- JDBC
- SQL夹杂在Java代码中耦合度高,导致硬编码内伤
- 维护不易且实际开发需求中SQL有变化,频繁修改的情况多见
- 代码冗长,开发效率低
- MyBatis
- 轻量级,性能出色
- SQL和Java编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据。
- 开发效率稍逊于HIbernate,但是完全能够接受
- Hibernate和JPA
- 操作简便,开发效率高
- 程序中的长难复杂SQL需要绕过框架。
- 内部自动生产的SQL,不容易做特殊优化
- 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。
- 反射操作太多,导致数据库性能下降
Mybatis使用基本知识:
1.相关概念:ORM (Object Relationship Mapping)对象关系映射。如图:
2.Mybatis具有面向接口编程的功能, Mapper接口相当于Dao。创建流程如图:
3.sqlSession:代表Java程序和数据库之间的会话,而HttpSession是Java程序和浏览器之间的会话
4.sqlSessionFactory:是"生产"SqlSession的“工厂",这里使用了工厂模式工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类"中,以后都使用这个工厂类来“生产"我们需要的对象。
使用mybatis
映射文件
insert into user values (null ,"123465","101")
接口类
package mapper;
public interface UserMapper {
int insert();
}
测试类
package controller;
import mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class Controller {
public static void main(String[] args) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.insert();
sqlSession.commit();
System.out.println(i);
}
}



