Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。通俗来讲,Mybatis框架对数据库的增,删,改,查操作进行整合,大大减少了代码量。
1.搭建环境
- 项目中导入jar包
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
- 创建数据库与表
create database eesy_mybatis;
use eesy_mybatis;
create table my_user(
id int auto_increment,
username varchar(50),
birthday datetime,
sex char(1),
address varchar(256),
primary key(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
insert into my_user(username,birthday,sex,address) values('jack1','2012-6-03','男','重庆');
insert into my_user(username,birthday,sex,address) values('jack2','2007-4-13','男','北京');
insert into my_user(username,birthday,sex,address) values('jack3','2002-7-23','男','上海');
insert into my_user(username,birthday,sex,address) values('jack4','2006-7-12','男','天津');
- mybatis环境配置
1)主环境配置
配置事务类型,利用连接池连接数据库。
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的4个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
2)映射文件配置
关联xml配置sql语句的文件。(mybatis框架核心)
<mappers>
<mapper resource="com/jack/dao/UserDao.xml"/>
</mappers>
2.入门案例
1)采用xml文件配置方式
- 创建pojo和dao类
创建User类,编写set和get方法,重写toString方法。
创建dao类,用户的持久层接口,里面是直接操作与数据库的方法,zeng,删,改,查等。
- 配置dao.xml映射文件
增加mapper约束,通过mapper标签,编写sql语句。
- 测试mybatis
mybatis并没有通过实现dao接口的方式来操作数据库,而是采用与数据库产生交互的方式,直接在java端输入sql语句对数据库进行curd操作,通过反射机制获取到一个dao代理对象实现。
成功获取到数据库数据信息
2)采用注解方式
采用注解方式时,在配置映射xml文件时,就不需要关联一个配置的映射dao.xml文件了,sql语句直接通过注解的方式传输。
- 在dao层进行注解
- 测试
依然根据反射机制获取到dao的代理对象(Session.getMapper()方法),调用相应的方法,就能实现对数据库的curd操作。过程与xml测试一样。
总结
在mapper标签上,一个namespace只对应一个dao接口,使用注解方式时,mapper还有可以使用package标签代替。