框架搭建的流程
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高级语言程序设计之输入秒数并用时钟的方式表达

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

  2. BZOJ_4034 [HAOI2015]树上操作 【树链剖分dfs序+线段树】

    一 题目 [HAOI2015]树上操作 二 分析 树链剖分的题,这里主要用到了$dfs$序,这题比较简单的就是不用求$lca$. 1.和树链剖分一样,先用邻接链表建双向图. 2.跑两遍$dfs$,其实 ...

  3. mysql连接不上本地服务器或者localhost:3306报错

    今天初学MySQL数据库就遇到问题: 主要是本地服务器登录问题 workbench里双击那个connection出现的 解决方法: 1:看一看防火墙,这是最常见的,这种主要是防火墙限制了访问,可能是安 ...

  4. 【DB宝45】MySQL高可用之MGR+Consul架构部署

    目录 一.MGR+Consul架构简介 二.搭建MGR 2.1.申请3台MGR机器 2.2.3台主机安装MySQL环境 2.3.修改MySQL参数 2.4.重启MySQL环境 2.5.安装MGR插件( ...

  5. PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642 题目描述: 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每 ...

  6. mysql中FIND_IN_SET函数用法

    本篇文章主要介绍mysql中FIND_IN_SET函数用法,用来精确查询字段中以逗号分隔的数据 以及其与 like 和 in 的区别 1.问题发现 之前在做工作任务时有这么一个需求:需要用接口所传的服 ...

  7. SyntaxError :invalid syntax Python常见错误

    1.忘记在 if , elif , else , for , while , class ,def 声明末尾添加 ":" 2.使用 = 而不是 ==,= 是赋值操作符而 == 是等 ...

  8. C++并发与多线程学习笔记--参数传递详解

    传递临时对象 陷阱 总结 临时对象作为线程参数 线程id的概念 临时对象构造时的抓捕 成员函数指针做线程函数 传递临时对象作为线程参数 创建的工作线程不止一个,线程根据编号来确定工作内容.每个线程都需 ...

  9. Azure DevOps 跨账号连接 Azure 服务

    一,引言 由于新申请的 Azure DevOps 账号中的私有项目不在享受托管代理提供的1800分钟的免费时间,又不想花钱付费,那我们只能另想版本解决没有并行作业的问题. -------------- ...

  10. 原生php 实现 thinkphp 数据库链式操作!!!

    https://www.bilibili.com/video/BV1v4411A74Q?p=16&spm_id_from=pageDriver 没事可以看两遍,加深一下基础知识!!!