springboot之mybatis基础

springboot之mybatis基础

  • 简介
    • 基础jdbc
    • Mybaits工作原理
    • 首先弄懂的问题:mybatis #{}和${}的区别
    • 开始运用
      • 添加依赖
      • 注解方式
        • 配置
        • mapper接口
        • mapper扫描配置
        • 测试接口
      • xml配置方式
        • 配置文件

简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
Mybatis与Hibernate区别

两个都是持久层框架,操作数据库,但是两者还是有区别的

hibernate:它是一个标准的orm框架,比较重量级,学习成本高.
  优点:高度封装,使用起来不用写sql,开发的时候,会减低开发周期.
  缺点:sql语句无法优化
  应用场景:oa(办公自动化系统), erp(企业的流程系统)等,还有一些政府项目,
  总的来说,在用于量不大,并发量小的时候使用.
mybatis:它不是一个orm框架, 它是对jdbc的轻量级封装, 学习成本低,比较简单
  优点:学习成本低, sql语句可以优化, 执行效率高,速度快
  缺点:编码量较大,会拖慢开发周期
  应用场景: 互联网项目,比如电商,P2p等
  总的来说是用户量较大,并发高的项目。

基础jdbc

springboot之mybatis基础_第1张图片

Mybaits工作原理

springboot之mybatis基础_第2张图片

工作原理解析

mybatis应用程序通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件(也可以用Java文件配置的方式,需要添加@Configuration)中构建出SqlSessionFactory(SqlSessionFactory是线程安全的);

然后,SqlSessionFactory的实例直接开启一个SqlSession,再通过SqlSession实例获得Mapper对象并运行Mapper映射的SQL语句,完成对数据库的CRUD和事务提交,之后关闭SqlSession。

说明:SqlSession是单线程对象,因为它是非线程安全的,是持久化操作的独享对象,类似jdbc中的Connection,底层就封装了jdbc连接。

详细流程如下:

1、加载mybatis全局配置文件(数据源、mapper映射文件等),解析配置文件,MyBatis基于XML配置文件生成Configuration,和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着
        SELECT *
        FROM user
    

sqlMapConfig.xml



     
     


编写mapper

 
public interface UserMapper {
 
     /**
      * 获取所有的user对象
      *
      * @return
      */
     List getAll();
}

编写service

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
 
    public List getAll() {
         return userMapper.getAll();
    };
}




主运行类

@SpringBootApplication
@MapperScan(basePackages = {"com.liujia.springdemo.mapper"})
public class Application {
 
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

总结:
两种方式的区别
1:是否需要在application.properties中配置mapper.xml和sqlMapperConfig.xml
2:将SQL语句写在了XML中
由于第二种方式将比较繁琐的SQL语句写在了配置文件中,整个代码结构更加清晰,本人更加喜欢此种配置方式。

你可能感兴趣的:(springboot之mybatis基础)