学习MyBatis框架之前,先来了解一下什么是框架?
框架,其实就是软件的半成品,完成了软件开发过程中的通用操作,开发人员只需要很少或者不用进行加工就能实现特定的功能,从而简化开发人员在开发过程中的步骤,提高开发效率。
常用的框架:
SSM Spring + SpringMVC + MyBatis
SSH Spring + Struts2 + Hibernate
MyBatis介绍
MyBatis是一个半自动的ORM框架
ORM(Object Relation Mapping)对象关系映射,将Java中的一个对象与数据表中一行记录一一对应。
ORM框架提供了实体类与数据表的映射关系,通过映射文件的配置实现对象的持久化。
MyBatis的特点:
MyBatis框架在IDEA中部署
框架部署,就是将框架引入到项目中
创建Maven工程:Java/web都可以
下面演示创建Java工程:
创建好的Java项目结构
在项目中添加Maven依赖(jar包)
在pom.xml文件中添加依赖(myBatis、mysql driver)
<dependencies> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <!--mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> </dependencies>
创建MyBatis配置文件
<configuration> <!--在environments配置数据库连接信息--> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <!--配置数据库连接信息--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db_fmwy?characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> </configuration>
MyBatis框架使用
创建数据表:
创建实体类;
创建DAO接口,定义操作方法
public interface StudentDAO { //添加 public int insertStudent(Student student); //删除 public int deleteStudent(String stuNum); }
创建DAO接口的映射文件
在resource目录下,新建名为mappers文件夹
在mappers中新建名为StudentMapper.xml的映射文件
在映射文件中对DAO定义的方法实现
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.qgc.dao.StudentDAO"> <insert id="insertStudent"> insert into tb_students(stu_num,stu_name,stu_gender,stu_age) value (#{stuNum},#{stuName},#{stuGender},#{stuAge}) </insert> <delete id="deleteStudent"> delete from tb_students where stu_num=#{stuNum} </delete> </mapper>
将映射文件添加到主配置文件中
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--在environments配置数据库连接信息--> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <!--配置数据库连接信息--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db_fmwy?characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mappers/StudentMapper.xml"></mapper> </mappers> </configuration>
创建单元测试类
添加单元测试依赖
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
创建单元测试类
添加测试代码
public class StudentDAOTest { @org.junit.Test public void insertStudent() { try { //加载mybatis配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //会话工厂 SqlSessionFactory factory = builder.build(is); //会话连接 SqlSession sqlSession = factory.openSession(); //通过会话获取DAO对象 StudentDAO studentDAO = sqlSession.getMapper(StudentDAO.class); //测试StudentDAO中的方法 int i = studentDAO.insertStudent(new Student(0,"10001","张三","男",21)); //需要手动提交 sqlSession.commit(); System.out.println(i); } catch (IOException e) { e.printStackTrace(); } } }