原是apache的一个开源项目iBatis, 2010年6月这个项目由apache software foundation迁移到了google code,随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis,代码于2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
1.mybatis是支持定制化SQL,存储过程以及高级映射的优秀的持久层框架
2.mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
3.Mybatis可以简单使用的XML或者注解用于配置和原始映射将接口和java的pojo映射成为数据库中的记录
4.Mybatis是一个半自动的ORM框架
下载地址http://github.com/mybatis/mybatis-3http://github.com/mybatis/mybatis-3
1)JDBC
SQL 夹在Java代码块里,耦合度高导致硬编码内伤
维护不易且实际开发需求中SQL有变化,频繁修改的情况很多
2)Hibernate 和 JPA
长难复杂SQL, 对于Hibernate 而言处理也不容易
内部自动生产的SQL,不容易做特殊优化
基于全映射的全自动框架,大量字段的POJO 进行部分映射时,比较困难。导致数据库性能下降
3) Mybatis
对于开发人员而言,核心SQL还是要自己书写跟优化
SQL和Java编码分开,功能便捷清洗,一个专注业务,一个专注数据
1.创建项目
2.引入依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.2.2
mysql
mysql-connector-java
需要创建Mybatis的核心配置文件命名为mybatis-config.xml
存放位置是src/main/resources目录下
详细说明:
创建mapper接口
Mybatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。
public interface UserMapper{
}
创建mybatis映射文件
相关概念ORM对象关系映射
对象:Java的实体类对象
关系:关系型数据库
映射:两者之间的关系
java概念 | 数据库概念 |
类 | 表 |
属性 | 字段/列 |
对象 | 记录/行 |
1.映射文件的命名规范
表对应的实体类的表名+Mapper.xml
例如:表t_user,映射的实体类为User,所以对应文件为UserMapper.xml
因此一个映射文件对应一个实体类,对应一张表的操作。
Mybatis映射文件用于编写SQL,访问以及操作表中的数据
Mybatis映射文件存放的位置是src/main/resources/mappers目录下
2.Mybatis中可以面向接口操作数据,要保持两个一致
a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致
b>mapper接口方法的方法名和映射文件中编写SQL的标签的id属性保持一致
insert into t_user vlues(null,'admin','123456',23,'男','[email protected]',now())
测试添加功能
@Test
void contextLoads() throws IOException {
//加载核心配置
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//获取sqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取sqlSessionFactory生成Sqlsession对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
//创建Sqlsession对象通过Sqlsession对象操作的sql都必须手动提交或者回滚
//SqlSession session = sqlSessionFactory.openSession();
//创建Sqlsession对象通过Sqlsession对象操作的sql都会自动提交
SqlSession session = sqlSessionFactory.openSession(true);
//通过代理创建UserMapper实现类对象
UserMapper mapper = session.getMapper(UserMapper.class);
//调用方法匹配调用的方法映射文件的SQL标签并执行SQL语句
int result= mapper.insertUser();
//session.commit();
System.out.println("结果"+result);
}
优化功能
加入log4j日志依赖
log4j
log4j
1.2.17
加入log4j的配置文件
log4j的配置文件吗为log4j.xml存放的位置是src/main/resources目录下
`
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql"//localhost:3306/mybatis
jdbc:username=root
jdbc:password=123456
mybatis-config.xml