框架搭建的流程
1. 导入jar
2. 准备属性文件和配置文件
3. 编写数据库的表和类
4. 为类编写一个XxxMapper接口
5. 编写接口对应的映射文件XxxMapper.xml
6. 根据接口的方法, 在映射文件中编写SQL
7. 编写测试类(使用接口代理方式来获取接口的实现类对象)
接口 对象 = sqlSession.getMapper(接口.class);
对象.方法() 内部会通过Mybatis框架自动完成SQL的CURD及结果封装的所有操作

使用流程
1. 根据表创建实体类
2. 创建接口及映射文件(4个绑定) SQL
3. 映射文件需要在mybatis-config.xml中配置<mapper resource="">

# Mybatis Pool Config
pool.driverClass=com.mysql.cj.jdbc.Driver
pool.url=jdbc:mysql://localhost:3306/xiaocheng?useSSL=false&characterEncoding=UTF8&serverTimeZone=UTC
pool.user=root
pool.password=root

log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %l %m%n

<?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>

<!-- 1. 专用于加载外部的属性文件 -->
<properties resource="app.properties"></properties>

<!-- 2. Mybatis操作的数据库环境 -->
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"/> <!--事务管理器: 采用JDBC默认事务 -->
<dataSource type="POOLED"> <!-- Mybatis内置了一个数据库的连接池 -->
<property name="driver" value="${pool.driverClass}"/>
<property name="url" value="${pool.url}"/>
<property name="username" value="${pool.user}"/>
<property name="password" value="${pool.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="mapper.EmployeeMapper"/>
</mappers>
</configuration>

public class Employee implements Serializable {/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id; // 编号
private String name; // 姓名
private String tno; // 工号
private String gender; // 性别
private String title; // 职称
private Integer managerId; // 直属领导编号
private Integer deptId; // 直属部门编号

无参

get,set,toString}

public interface EmployeeMapper {
/**
* 功能 : 通过id来查询员工对象
* @param id 员工编号
* @return 单个员工对象
*/
public Employee findById(int 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="mapper.EmployeeMapper">
<resultMap type="entity.Employee" id="baseMap">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="tno" property="tno"/>
<result column="gender" property="gender"/>
<result column="title" property="title"/>
<result column="managerId" property="managerId"/>
<result column="layout" property="layout"/>
<result column="deptId" property="deptId"/>
</resultMap>
<!-- 1. public Employee findById(int id); -->
<select id="findById" parameterType="int" resultType="entity.Employee">
SELECT * FROM t_emp WHERE id=#{value}
</select>
</mapper>

package util;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
* 封装了Mybatis工厂的加载过程
* 功能 : 可以提供一个SqlSession 【数据库连接对象】
*/
public class DBUtil {

private static SqlSessionFactory factory;

static {
//1.创建一个工厂的建造者【使用了建造者设计模式】
SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
//2. 通过建造者来创建一个Mybatis的工厂【mybatis-config.xml 就是创建的图纸】
try(InputStream ins = Resources.getResourceAsStream("mybatis-config.xml");) {
factory = factoryBuilder.build(ins);
} catch (Exception e) {
}
}

/**
* 这种方式的SqlSession默认为手动提交【事务场景使用】
* @return
*/
public static SqlSession openSqlSession() {
return openSqlSession(false); // 本质 : conn.setAutoCommit(false)
}

/**
* 这种方式的SqlSession可以设置为手动提交,还可以设置为自动提交
* @param flag true【自动提交的】 false【手动提交】
* @return
*/
public static SqlSession openSqlSession(boolean flag) {
return factory.openSession(flag);
}
}

public class EmployeeTest {
@Test
public void testFindById() {
SqlSession sqlSession = DBUtil.openSqlSession(true);
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Employee emp = mapper.findById(11);
System.out.println(emp);
}
}

Mybatis最终搭建的更多相关文章

  1. SpringMVC+Mybatis框架搭建

    一.新建javaweb项目,并建好相应的包结构 二.添加项目jar到lib目录下 三.在config包中新建配置文件 sping-mvc.xml,内容如下: <?xml version=&quo ...

  2. mybatis框架搭建学习初步

    mybatis框架搭建步骤:1. 拷贝jar到lib目录下,而且添加到工程中2. 创建mybatis-config.xml文件,配置数据库连接信息 <environments default=& ...

  3. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  4. mybatis的搭建和注入spring的方式

    mybatis实际上是一个更多关注sql语句的框架,他的出现是想让开发者更简单的去操作数据库. 与hibernate相比较,hibernate更多的是去sql化,虽然hibernate也可以本地sql ...

  5. Spring+Mybatis+Mysql搭建分布式数据库访问框架

    一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...

  6. springmvc+mybatis环境搭建

    1.spring+mybatis 环境搭建: A.配置jdbc和dbcp数据源:注意版本com.mysql.cj.jdbc.Driver B.配置sessionfactory,绑定dbcp及配置map ...

  7. mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)

    继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-we ...

  8. MyBatis -01- 初识 MyBatis + MyBatis 环境搭建

    MyBatis -01- 初识 MyBatis + MyBatis 环境搭建 MyBatis 本是 apache 的一个开源项目 iBatis(iBATIS = "internet" ...

  9. MyBatis之MyBatis环境搭建

    MyBatis之MyBatis环境搭建 一.MyBatis开发环境搭建 1.引入Jar包 ①MyBatis mybatis-3.4.1.jar ant-1.9.6.jar ant-launcher-1 ...

随机推荐

  1. LZZY高级语言程序设计之169页**5.17

    import java.util.Scanner;public class MQ3 { public static void main(String[] args) { Scanner sc = ne ...

  2. Bug调试专项练习三笔记

    前言:大家需要将文件夹中"有问题的代码" 导入到自己的工作空间中一. 训练一: 正确效果:首先要求大家导入给大家的项目, 给项目的"虚拟路径" 设定为" ...

  3. Qt3D使用assimp加载常规模型文件

    Qt3D使用assimp加载三维模型文件,assimp支持很多常规格式的三维模型格式: 其中支持导入的格式有: 3D 3DS 3MF AC AC3D ACC AMJ ASE ASK B3D BLEND ...

  4. Angle Beats Gym - 102361A

    题目链接:https://vjudge.net/problem/Gym-102361A 题意:给定N个点,q次询问每次询问给一个点,问在N个点中取2个和给定点最多可以组成几个直角三角形. 思路:htt ...

  5. python-6-1

    1.定义一个时间戳转换成格式化时间的函数import time def timestamp_to_fomat(timestamp= None,format ='%Y-%m-%d %H:%M:%S' ) ...

  6. AutoPy开发文档

    AutoPy 简介 AutoPy是为python开发者提供的一个安卓插件,由路飞大佬开发维护,主要功能为了实现使用python在安卓端完成一些操作,例如点击,滑动,返回 准备 安装AutoPy.apk ...

  7. Spark中普通集合与RDD算子的sortBy()有什么区别

    分别观察一下集合与算子的sortBy()的参数列表 普通集合的sortBy() RDD算子的sortBy() 结论:普通集合的sortBy就没有false参数,也就是说只能默认的升序排. 如果需要对普 ...

  8. C语言之预处理详解

    C语言之预处理详解 纲要: 预定义符号 #define #define定义标识符 #define定义宏 #define的替换规则 #与## 几点注意#undef 带副作用的宏参数 宏和函数的对比 命名 ...

  9. Java进阶专题(二十八) Service Mesh初体验

    前言 ​ ⽬前,微服务的架构⽅式在企业中得到了极⼤的发展,主要原因是其解决了传统的单体架构中存在的问题.当单体架构拆分成微服务架构就可以⾼枕⽆忧了吗? 显然不是的.微服务架构体系中同样也存在很多的挑战 ...

  10. 经典变长指令ModR/M

    变长指令 不是所有的指令都是,看到opcode就知道有多长(定长指令),当指令中出现内存操作对象的时候,就需要在操作码后面附加一个字节来进行补充说明,这个字节被称为ModR/M. 该字节的8个位被分成 ...