MyBatis安装、配置
1 简介
1.1 概述
- MyBatis是一个半自动化的持久化层框架
1.2 为什么要使用MyBatis
- 对于开发人员而言,核心SQL还是需要自己优化
- SQL和Java编码分开,功能边界清晰,一个专注业务,一个专注数据
1.2.1 JDBC
- SQL夹在Java代码块里,耦合度高导致硬编码内伤
- 维护不易,且实际开发需求中SQL频繁修改的情况是多见的
1.2.2 Hibernate
- 长难SQL对于Hibernate而言处理也不容易
- 内部自动产生的SQL,不容易做特殊优化
- 基于全映射的全自动框架,大量自动的POJO进行部分映射时比较困难,导致数据库性能下降
2 idea导入MyBatis
- 使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:
1 | <dependency> |
“x.x.x”替换成对应的版本号
3 Hello world
3.1 创建MySQL数据表、添加数据
1 | create table employees ( |
3.2 从 XML 中构建 SqlSessionFactory
1 | package com.lnhoo; |
- 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
3.3 mybatis-config.xml
1 |
|
- XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)
3.4 Mapper配置文件
1 |
|
- 在数据库表中的字段last_name对应于Employee类中的lastName属性,因为命名不一致,所以需要在SQL语句中将last_name字段起别名为lastName
3.5 接口式编程
3.5.1 定义接口
1 | public interface EmployeeMapper { |
- 在接口中定义方法的参数和返回值
3.5.2 定义Mapper
1 |
|
- 通过xml文件配置接口和SQL语句的绑定关系
- mapper标签的namespace属性必须和Mapper接口的全路径一致
- select标签的id属性必须和接口中定义的方法名一致,resultType属性填返回对象所属类的全路径
3.5.3 调用方法
1 | public class MyBatisTest { |
- 将接口和xml配置文件绑定后,MyBatis会自动为接口创建动态代理对象,由代理对象去执行增删改查