转:https://blog.csdn.net/gaomb_1990/article/details/78299784

一、准备

Eclipse:Luna Service Release 1 (4.4.1)
MyBatis:org.mybatis.mybatis-3.2.8
JDK:1.7.0_79

二、步骤

♦搭建一个Maven工程MyBatisDemo

♦POM文件导入相关依赖

  1. <span style="font-family:'KaiTi_GB2312';"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.queen.mybatis</groupId>
  5. <artifactId>MyBatisDemo</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>war</packaging>
  8. <dependencies>
  9. <!-- 单元测试 -->
  10. <dependency>
  11. <groupId>junit</groupId>
  12. <artifactId>junit</artifactId>
  13. <version>4.10</version>
  14. <scope>test</scope>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.mybatis</groupId>
  18. <artifactId>mybatis</artifactId>
  19. <version>3.2.8</version>
  20. </dependency>
  21. <!-- MySql -->
  22. <dependency>
  23. <groupId>mysql</groupId>
  24. <artifactId>mysql-connector-java</artifactId>
  25. <version>5.1.32</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.slf4j</groupId>
  29. <artifactId>slf4j-log4j12</artifactId>
  30. <version>1.6.4</version>
  31. </dependency>
  32. </dependencies>
  33. </project></span>

♦配置MyBatis的核心文件mybatis-config.xml

  1. <span style="font-family:'KaiTi_GB2312';"><?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <environments default="development">
  7. <environment id="development">
  8. <transactionManager type="JDBC" />
  9. <dataSource type="POOLED">
  10. <property name="driver" value="com.mysql.jdbc.Driver" />
  11. <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
  12. <property name="username" value="root" />
  13. <property name="password" value="root" />
  14. </dataSource>
  15. </environment>
  16. </environments>
  17. <mappers>
  18. <mapper resource="UserMapper.xml" />
  19. </mappers>
  20. </configuration></span>

注意:该文件中主要是连接数据库的信息,驱动,url,用户名,密码以及映射文件,将我们写好的sql映射文件(UserMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 。

♦配置log4j.properties

  1. <span style="font-family:'KaiTi_GB2312';">log4j.rootLogger=DEBUG,A1
  2. log4j.logger.com.queen = DEBUG
  3. log4j.logger.org.mybatis = DEBUG
  4. log4j.appender.A1=org.apache.log4j.ConsoleAppender
  5. log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n</span>

主要记录MyBatis运行过程中产生的一些日志信息。

♦编写接口类UserMapper

  1. <span style="font-family:'KaiTi_GB2312';">/**
  2. * @since 2017-07-15
  3. * @author queen
  4. * 定义一个UserMapper接口
  5. *
  6. */
  7. public interface UserMapper {
  8. /**
  9. * 根据ID查找用户
  10. * @param id
  11. * @return
  12. */
  13. public User findUserById(int id);
  14. }</span>

♦编写接口映射文件UserMapper.xml

  1. <span style="font-family:'KaiTi_GB2312';"><?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.queen.mybatis.mapper.UserMapper">
  6. <select id="findUserById" resultType="com.queen.mybatis.bean.User">
  7. select id, loginId, userName, role, note from t_user where id = #{id}
  8. </select>
  9. </mapper></span>

♦编写JavaBean类User

  1. <span style="font-family:'KaiTi_GB2312';">/**
  2. * @since 2017-07-15
  3. * @author queen
  4. * 定义一个Java类
  5. *
  6. */
  7. public class User {
  8. // ID,唯一性
  9. private String id;
  10. // 登录ID
  11. private String loginId;
  12. // 用户名
  13. private String userName;
  14. // 角色
  15. private String role;
  16. // 备注
  17. private String note;
  18. public String getId() {
  19. return id;
  20. }
  21. public void setId(String id) {
  22. this.id = id;
  23. }
  24. public String getLoginId() {
  25. return loginId;
  26. }
  27. public void setLoginId(String loginId) {
  28. this.loginId = loginId;
  29. }
  30. public String getUserName() {
  31. return userName;
  32. }
  33. public void setUserName(String userName) {
  34. this.userName = userName;
  35. }
  36. public String getRole() {
  37. return role;
  38. }
  39. public void setRole(String role) {
  40. this.role = role;
  41. }
  42. public String getNote() {
  43. return note;
  44. }
  45. public void setNote(String note) {
  46. this.note = note;
  47. }
  48. @Override
  49. public String toString() {
  50. return "User [id=" + id + ", loginId=" + loginId + ", userName="
  51. + userName + ", role=" + role + ", note=" + note + "]";
  52. }
  53. }</span>

♦最后编写测试类

  1. <span style="font-family:'KaiTi_GB2312';">/**
  2. * @since 2017-07-15
  3. * @author queen
  4. * 编写测试Java类
  5. *
  6. */
  7. public class MyBatisTest {
  8. public SqlSessionFactory getSqlSessionFactory() throws IOException {
  9. String resource = "mybatis-config.xml";
  10. InputStream inputStream = Resources.getResourceAsStream(resource);
  11. return new SqlSessionFactoryBuilder().build(inputStream);
  12. }
  13. @Test
  14. public void test() throws IOException {
  15. SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
  16. SqlSession openSession = sqlSessionFactory.openSession();
  17. try {
  18. User user = openSession.selectOne(
  19. "com.queen.mybatis.mapper.UserMapper.findUserById", "1");
  20. System.out.println(user);
  21. } finally {
  22. openSession.close();
  23. }
  24. }
  25. }</span>

♦测试运行一下,查找ID是1的数据,日志详细过程完美的打印在控制台

  1. <span style="font-family:'KaiTi_GB2312';">2017-07-15 16:52:43,862 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Opening JDBC Connection
  2. 2017-07-15 16:52:44,305 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 706757729.
  3. 2017-07-15 16:52:44,305 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2a204461]
  4. 2017-07-15 16:52:44,309 [main] [com.queen.mybatis.mapper.UserMapper.findUserById]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user where id = ?
  5. 2017-07-15 16:52:44,372 [main] [com.queen.mybatis.mapper.UserMapper.findUserById]-[DEBUG] ==> Parameters: 1(String)
  6. 2017-07-15 16:52:44,419 [main] [com.queen.mybatis.mapper.UserMapper.findUserById]-[DEBUG] <==      Total: 1
  7. User [id=1, loginId=Sabot, userName=萨博, role=革命军, note=革命军的二号人物,同艾斯一样,为蒙奇·D·路飞的哥哥(义兄)。]
  8. 2017-07-15 16:52:44,420 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2a204461]
  9. 2017-07-15 16:52:44,421 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@2a204461]
  10. 2017-07-15 16:52:44,421 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Returned connection 706757729 to pool.</span>

我们会很明显的发现这是一个完整的JDBC执行过程,打开连接,创建连接,将事务设置成false,准备SQL,SQL赋参数,执行SQL,事务提交,关闭连接,返回连接。其实MyBatis就是将这些动作封装,对于开发人员只需要关注SQL。

三、总结

MyBatis整个调用过程:
根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象有数据源一些运行环境信息
sql映射文件;配置了每一个sql,以及sql的封装规则等。
将sql映射文件注册在全局配置文件中
写代码:
①根据全局配置文件,SqlSessionFactoryBuilder得到SqlSessionFactory

  1. <span style="font-family:'KaiTi_GB2312';">public SqlSessionFactory getSqlSessionFactory() throws IOException {
  2. String resource = "mybatis-config.xml";
  3. InputStream inputStream = Resources.getResourceAsStream(resource);
  4. return new SqlSessionFactoryBuilder().build(inputStream);
  5. }</span>

②使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查

  1. <span style="font-family:'KaiTi_GB2312';">SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();</span>

③一个sqlSession就是代表和数据库的一次会话,用完关闭
④使用sql的唯一标志来告诉MyBatis执行哪个sql,sql都是保存在sql映射文件中的。

至此,我们关于MyBatis教程之简单的入门介绍完毕。只做了简单的查询动作。

学习MyBatis之简单入门HelloWorld的更多相关文章

  1. Spring学习之路——简单入门HelloWorld

    Spring简单介绍 Spring是一个提供了解决J2EE问题的一站式框架. Spring的核心是反转控制,通过配置文件完成业务对象之间的依赖注入,他鼓励一个良好的习惯,就是注入对接口编程而不是对类编 ...

  2. MyBatis(1)-简单入门

    简介 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.My ...

  3. SpringMVC学习笔记之---简单入门

    SpringMVC简单入门 (一)什么是MVC设计模式 (1)model:模型数据,业务逻辑 (3)view:呈现模型,与用户进行交互 (3)controller:负责接收并处理请求,响应客户端 (二 ...

  4. MyBatis的简单入门学习

    一个新知识开始是最难学的.(万事开头难) MyBatis大体分三层,接口层,数据处理层,基础支撑层. 其中接口层不是java中的那个interface,而是框架和程序员之间的对接.一个API,程序员可 ...

  5. JavaWeb_(Mybatis框架)MyBatis Generator简单入门

    官方文档 传送门 下载地址 传送门 MyBatis Generator(MBG)简介: MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将为 ...

  6. AngularJS学习笔记一:简单入门

    阿里云网站的前端是AngularJS实现的. 先下载AngularJS的开发工具包,我下载的angular-1.4.0. 在合适位置引入js文件: <script src="angul ...

  7. mybatis简单入门介绍

    mybatis入门 简介 什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及 ...

  8. MyBatis学习总结(一)简单入门案例

    MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...

  9. MyBatis学习(一)简单入门程序

    MyBatis入门学习 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...

随机推荐

  1. spring boot 入参方式

    方式: 1).直接写,如public User index2(String name) 2).@RequestParam 与直接写的区别是,可以写默认值. 3).@RequestBody 因为传入的是 ...

  2. java——数组队列 ArrayQueue

    队列: Array: package Date_pacage; public class Array<E> { //叫它静态数组 //private int[] data; private ...

  3. mysql远程连接问题 Lost connection to MySQL server at ‘reading initial communication packet', system error: 0

    在用Navicat for MySQL远程连接mysql的时候,出现了 Lost connection to MySQL server at ‘reading initial communicatio ...

  4. Unity3d 破解

    在官网上或者其他地方下载unity3d后 运行注册机,需要详细的设置可以点击edit   一.点击browse,选择安装unity目录下的Editor文件夹 二.选择path,会提示Pathed 三. ...

  5. 基于Python实现邮件发送

    import smtplibfrom email.mime.text import MIMETextemail_host = 'smtp.163.com' # 邮箱地址email_user = 'sz ...

  6. http三次握手四次挥手

    最近一直忙于看前端vue相关内容,后端相关内容没有跟进,文章停了3周,,,哎,还是懒吧!子曰生命在于运动,该学习还是要学的,文章嘛也还是要整理滴,不扯了--- 参考: https://blog.csd ...

  7. ip地址在通信中的变化(就简单的讲一下, 给自己mark)

    节点之间的通信 数据报文的封装(自上而下) http tcp ip mac(讯框) 数据报文的源ip和目标ip是不变的(在内网中, 如果考虑到连接到外部网路的时候, 如果有路由器(里面有嵌入式的Lin ...

  8. Windows窗体应用开发2--窗体和控件

    1.Windows窗体应用程序的各种组件 2.windows窗体控件的主要类别和功能 3.Windows窗体应用程序处理事件的方法 4.添加并配置Windows窗体和控件 5.创建时间处理程序并监视程 ...

  9. 三、oracle 表空间

    SQL> --清除屏幕信息 SQL> clear screen SQL> --查看表空间 SQL> select * from v$tablespace; SQL> -- ...

  10. uml的十三种图形

    1.用例图:对系统的使用方式分类. 2.类图:显示类和它们的相互关系. 3.对象图:只显示对象及它们的相互关系. 4.活动图:显示人或对象的活动,其方式类似于流程图. 5.状态机图:显示生命周期比较有 ...