首先导包

依赖如下

  <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies>

构建SqlSessionFactory

MyBatis应用是以SqlSessionFactory为中心的,实例可以通过SqlSessionFactoryBuilder获得.
其中SqlSessionFactory是工厂接口,任务用于创建SqlSession
配置文件将会解析配置XML文件在Configuration类对象中.

配置XML获取数据源,事务管理器,映射器

在resource文件下新建mybatis-config.xml文件
配置文件内容如下

<?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><!-- 定义别名 --><typeAliases><typeAlias type="com.ming.Role" alias="role"/></typeAliases><!-- 定义数据库信息 --><environments default="development"><environment id="development"><!-- jdbc事物管理 --><transactionManager type="JDBC"></transactionManager><!-- 数据库链接信息 --><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://47.94.95.84:32786/mybatis"/><property name="username" value="mybatis"/><property name="password" value="ABCcba20170607"/></dataSource></environment></environments>
</configuration>

新建类

package com.ming;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class Role {public String getSqlSessionFactory(){String resource = "mybatis-config.xml";try {// 获得输入流InputStream inputStream;inputStream = Resources.getResourceAsStream(resource);// 获得SqlSessionFactory工厂SqlSessionFactory sqlSessionFactory = null;sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}catch (IOException e){e.printStackTrace();}return null;}
}

最后新建测试类

package com.ming;import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class RoleTest {private Role role = null;@Beforepublic void setUp() throws Exception {this.role = new Role();}@Afterpublic void tearDown() throws Exception {}@Testpublic void getSqlSessionFactory() {role.getSqlSessionFactory();}
}

此时的目录结构

代码方式构建

 public SqlSessionFactory getSqlSessionFactory1(){// 创建数据库连接池PooledDataSource dataSource = new PooledDataSource();dataSource.setDriver("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://47.94.95.84:32786/mybatis");dataSource.setUsername("mybatis");dataSource.setPassword("ABCcba20170607");// 构建数据库事物TransactionFactory transactionFactory = new JdbcTransactionFactory();// 创建数据库环境Environment environment = new Environment("development", transactionFactory, dataSource);// 构建Configuration对象Configuration configuration = new Configuration(environment);// 注册上下文别名configuration.getTypeAliasRegistry().registerAlias("role", Role.class);// 创建映射器SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);return sqlSessionFactory;}

书写测试用例如下

package com.ming;import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class RoleTest {private Role role = null;@Beforepublic void setUp() throws Exception {this.role = new Role();}@Afterpublic void tearDown() throws Exception {}@Testpublic void getSqlSessionFactory() {role.getSqlSessionFactory();}@Testpublic void getSqlSessionFactory1() {role.getSqlSessionFactory1();}
}

创建SqlSession

SqlSession属于门面,通过SqlSession可以获得需要的什么信息

 SqlSession sqlSession = null;try{// 创建一个sqlsession会话sqlSession = sqlSessionFactory.openSession();sqlSession.commit();}catch (Exception e){// 输出错误信息System.out.println(e.getMessage());// 进行事物操作,回滚数据库数据sqlSession.rollback();}finally {// 进行资源关闭if(sqlSession != null){sqlSession.close();}}

SqlSession作用,获取映射器,通过命名信息执行sql结果

映射器

映射器由java和xml文件共同组成,作用
定义参数类型
描述缓存
描述sql
定义查询结果和POJO映射关系

先给出java接口

package com.ming;public interface RoleMapper {public Role getRole(Long id);
}

根据给定的id获取角色对象

给出映射文件,然后在生成的时候会根据接口实现类,生成对象.

先编写POJO

package com.ming;// POJO
public class Role {private int id;private String roleName;private String note;public void setId(int id) {this.id = id;}public void setRoleName(String roleName) {this.roleName = roleName;}public void setNote(String note) {this.note = note;}public int getId() {return id;}public String getRoleName() {return roleName;}public String getNote() {return note;}
}

在编写映射配置文件

<?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.ming.RoleMapper"><!-- 定义的接口方法为getRole 类型参数为long 返回的结果为role 即之前定义在xml文件中定义的vo别名 --><select id="getRole" parameterType="int" resultType="role"><!-- 定义sql语句-->SELECT id, role_name as roleName, note FROM t_role WHERE id = #{id}</select>
</mapper>

最后编写mybatis,添加映射器配置文件

<?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><!-- 定义别名 --><typeAliases><typeAlias type="com.ming.Role" alias="role"/></typeAliases><!-- 定义数据库信息 --><environments default="development"><environment id="development"><!-- jdbc事物管理 --><transactionManager type="JDBC"></transactionManager><!-- 数据库链接信息 --><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://47.94.95.84:32786/mybatis"/><property name="username" value="mybatis"/><property name="password" value="ABCcba20170607"/></dataSource></environment></environments><!-- 定义映射器 --><mappers><mapper resource="RoleMapper.xml"></mapper></mappers>
</configuration>

最后再编写执行sql的类

package com.ming;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;import java.io.IOException;
import java.io.InputStream;public class MyBatis {public String getSqlSessionFactory(){String resource = "mybatis-config.xml";SqlSessionFactory sqlSessionFactory = null;try {// 获得输入流InputStream inputStream;inputStream = Resources.getResourceAsStream(resource);// 获得SqlSessionFactory工厂sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}catch (IOException e){e.printStackTrace();}SqlSession sqlSession = null;try{// 创建一个sqlsession会话sqlSession = sqlSessionFactory.openSession();// 获得映射器// 接口传入映射器中RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);// 执行方法Role role = roleMapper.getRole(0);System.out.println(role.getRoleName());// 刷新语句并提交链接sqlSession.commit();}catch (Exception e){// 输出错误信息System.out.println(e.getMessage());// 进行事物操作,回滚数据库数据sqlSession.rollback();}finally {// 进行资源关闭if(sqlSession != null){sqlSession.close();}}return null;}public SqlSessionFactory getSqlSessionFactory1(){// 创建数据库连接池PooledDataSource dataSource = new PooledDataSource();dataSource.setDriver("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://47.94.95.84:32786/mybatis");dataSource.setUsername("mybatis");dataSource.setPassword("ABCcba20170607");// 构建数据库事物TransactionFactory transactionFactory = new JdbcTransactionFactory();// 创建数据库环境Environment environment = new Environment("development", transactionFactory, dataSource);// 构建Configuration对象Configuration configuration = new Configuration(environment);// 注册上下文别名configuration.getTypeAliasRegistry().registerAlias("role", MyBatis.class);// 创建映射器SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);return sqlSessionFactory;}
}

最后编写测试类

package com.ming;import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class MyBatisTest {private MyBatis myBatis = null;@Beforepublic void setUp() throws Exception {this.myBatis = new MyBatis();}@Afterpublic void tearDown() throws Exception {}@Testpublic void getSqlSessionFactory() {myBatis.getSqlSessionFactory();}@Testpublic void getSqlSessionFactory1() {myBatis.getSqlSessionFactory1();}
}

执行单元测试
结果如下

即完成了MyBatis的一次查询

注解

定义接口

package com.ming;import org.apache.ibatis.annotations.Select;public interface Role1 {@Select (value="SELECT id, role_name as roleName, note FROM t_role WHERE id = #{id}")public Role getRole(int id);
}

生命周期

SqlSessionFactoryBuilder

其是利用xml或者java编码构建SqlSessionFactory 可以构建多个SessionFactory 作用 构建器
根据构建器获得sqlSessionFactory

SqlSessionFactory

创建SqlSession 一个SqlSession相当于JDBC的Connection对象
此为单例管理
每创建一个SqlSession就会创建一个数据库连接

SqlSession

此为一个会话,相当于一个Connection连接 线程不安全
生命周期为一个应用的请求和操作,可以执行多条sql

mybatis 入门搭建相关推荐

  1. mybatis入门学习之环境的搭建——helloworld

    Mybatis框架环境的搭建 首先,我是一名走java后端的大二菜鸟,我写博客一方面是用来记录我学习中遇到的问题,另一方面是希望和更多的人分享经验.如果我写的内容有不严谨的地方,还请大佬们纠正一下. ...

  2. spring mvc + mybatis 框架搭建 ( idea + gradle)

    spring mvc + mybatis 框架搭建 idea + gradle 刚刚入门,只是个人见解,如有错误或者问题欢迎指出指正. 邮箱: [ wgh0807@qq.com ] 文章引用: [ap ...

  3. MyBatis1:MyBatis入门

    MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...

  4. MyBatis(1):MyBatis入门

    MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...

  5. MyBatis-学习笔记02【02.Mybatis入门案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  6. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    阅读目录 一:原始dao开发方法 二:mapper代理方法(只需要mapper接口,相当于dao接口) 承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisS ...

  7. 【Mybatis入门20221024】

    Mybatis入门20221024 一. 搭建环境 1.1 配置Mysql环境 1.2 配置Maven环境 二. 创建包`utils`的工具类`MybatisUtils` 三. 创建文件`resour ...

  8. 【Mybatis从入门到实战教程】第一章 Mybatis 入门

    一.Mybatis 入门 1.1 什么是MyBatis MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了goo ...

  9. Mybatis学习笔记——Mybatis入门

    文章目录 Mybatis入门 1.为什么要使用mybatis? 2.ORM 3.mybatis简介 4.mybatis框架 5.mybatis入门程序 5.1搭建环境 5.2 配置log4j 5.3 ...

最新文章

  1. vc++从txt文件中读取数据
  2. Servlet-forward转发
  3. 2021年新高考八省联考成绩查询辽宁,辽宁八省联考成绩什么时候出 辽宁八省联考成绩查询入口...
  4. 【NLP】基于深度学习的文本分类应用
  5. 写日历的程序员,你必须弄懂的中国农历算法。
  6. sqlite 事务处理 java_SQLite事务处理
  7. Linux -- 基于zookeeper的java api(二)
  8. eclipse在debug启动时无法启动解决办法
  9. Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
  10. 服务器配置文件设计,IM配置服务器概要的设计文件.doc
  11. java线程池的好处_Java 线程池的使用好处
  12. node中exports和module.exports的关系及使用
  13. 内网渗透-域管理员定位
  14. scratch案例——小游戏制作人物攻击、受伤动作篇
  15. GIS应用技巧之景观格局分析(三)
  16. HP 笔记本电脑 - 笔记本电脑睡眠后如何唤醒
  17. MiL.k x Bithumb x Yanolja宣布建立三方商务及市场营销合作关系
  18. 小程序底部兼容iphoneX
  19. CAD如何编辑多段线的顶点信息
  20. Android 8.0 华为手机 桌面应用图标显示圆形适配方案

热门文章

  1. 如何快速的打造python 版的vim ide
  2. HDF及HDF-EOS数据格式简介
  3. ISO20000带来什么?
  4. Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)
  5. day27-python并发编程之多进程
  6. iphone 微信下浏览器中数字去除下划线
  7. python学习笔记-Day08--(面向对象)--补充
  8. JS原生父子页面操作
  9. Editor扩展之查看Prefab用在那儿
  10. 确保客户端可以接收到服务端的异常serviceDebug includeExceptionDetailInFaults=true