1.什么是mybatis
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀==ORM框架==。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 半自动化框架。必须写sql语句。
总的来说MyBatis就是封装与数据库交互的半成品
2.mybatis的使用
2.1创建Maven项目
(1)File--new--project
(2)选中左侧菜单栏中的Maven
(3)因为只创建一个普通的项目,所以直接点击next即可
(4)填入Groupld【包名】和Artifactld【项目名】
(5)点击Finish创建完成
2.2 导包
点开项目中的pom.xml文件将需要的jar包导入
<dependencies>
<!--mysql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!--lombok的依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
</dependencies>
2.3配置mybatis文件
(1)引入db属性文件
1.1定义一个数据库属性文件.properties【后缀名】
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai
jdbc.driverName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=123456
1.2在mybatis配置文件中引入属性文件并使用相应的key
<?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>
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--引入相应的映射文件-->
<mappers>
<mapper resource="【映射文件路径】"/>
</mappers>
</configuration>
1.3创建实体类并有对应的getter和setter方法
package com.aaa.qy145.entity;
import lombok.Data;
/**
* @program: HelloMybatis
* @description:
* @author: 深巷少年梦
* @create: 2021-12-03 18:32
**/
//因为装有lombok插件所以直接Data注解可以起到getter和setter的作用
@Data
public class Emp {
private Integer empNo; //主键
private String eName; //员工名
private String job; //职位
private Integer mgr;
private Integer depTno;
}
1.4创建mapper接口和mapper.xml
EmpDao.java
package com.aaa.qy145.dao;
import com.aaa.qy145.entity.Emp;
public interface EmpDao {
//通过id查找
Emp selectById(int id);
}
EmpMapper.xml
属性标签说明:
- <id> 主键
- <result> 其它字段
- <sql> 通过该标签可定义能复用的sql语句片段,在执行sql语句标签中直接引用即可。这样既可以提高编码效率,还能有效简化代码,提高可读性
- <include> 引用<sql>标签,refid="" 中的值指向需要引用的<sql>中的id=“”属性
<?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.aaa.qy145.dao.EmpDao">
<resultMap id="map01" type="com.aaa.qy145.entity.Emp">
<id property="empNo" column="empno"/>
<result property="ename" column="ENAME"/>
<result property="job" column="JOB"/>
<result property="mgr" column="MGR"/>
<result property="depTno" column="DEPTNO"/>
</resultMap>
<sql id="sql01">
empno,ENAME,JOB,MGR,DEPTNO
</sql>
<select id="selectById" resultMap="map01">
select
<include refid="sql01"/>
from emp where empno=#{empNo}
</select>
</mapper>
1.5测试
import com.aaa.qy145.dao.EmpDao;
import com.aaa.qy145.entity.Emp;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import java.io.Reader;
/**
* @program: HelloMybatis
* @description:
* @author: 深巷少年梦
* @create: 2021-12-03 16:55
**/
public class Test01 {
private SqlSession session;
@Before
public void test()throws Exception{
Reader read = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(read);
session = sqlSessionFactory.openSession();
}
@Test
public void testSelectById(){
EmpDao mapper = session.getMapper(EmpDao.class);
Emp emp = mapper.selectById(7369);
System.out.println(emp);
}
}
获得的运行结果如下:
查找到员工号为7369的员工信息