转: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. 用HTMLParser解析html时报错:No module named 'htmlentitydefs'

    python3.6用HTMLParser解析html时报错 No module named 'htmlentitydefs'或No module named 'markupbase' 先上代码 fro ...

  2. SQL Server Reporting Service(SSRS) 第五篇 自定义数据处理扩展DPE(Data Processing Extension)

    最近在做SSRS项目时,遇到这么一个情形:该项目有多个数据库,每个数据库都在不同的服务器,但每个数据库所拥有的数据库对象(table/view/SPs/functions)都是一模一样的,后来结合网络 ...

  3. 使用Faster R-CNN做目标检测 - 学习luminoth代码

    像玩乐高一样拆解Faster R-CNN:详解目标检测的实现过程 https://mp.weixin.qq.com/s/M_i38L2brq69BYzmaPeJ9w 直接参考开源目标检测代码lumin ...

  4. STM32 从M3到M4

    一 考虑STM32不同系列移植的外设资源情况: STM32微控制器应用的移植和兼容性指南AN3364 二 M4的DSP/FPU的使用方法https://blog.csdn.net/electrocra ...

  5. java 与 数据库的连接

    Eclipse中使用SQL server 2017数据库 一.准备材料 要能够使用数据库就要有相应的JDBC,所以我们要去Microsoft官网下载https://www.microsoft.com/ ...

  6. 使用summernote编辑器上传图片,重写onImageUpload

    JS部分:$('.summernote').summernote({ height: 200,//高度 tabsize: 2,//页面上的summernote编辑框的个数 lang: 'zh-CN', ...

  7. inventor安装失败怎样卸载安装inventor 2017?

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  8. iTween 不能两个游戏对象同时用一个Hashtable

    两个游戏对象,点击其中一个,两个对象一起旋转,再点一下,两个都旋转到原来角度. 如图:两个游戏对象不能用一个Hashtable,会出错,达不到两个一起转的效果. 每个对象要有自己的Hashtable来 ...

  9. fastjson的json字符串转List

     1.代码 gameListStr = "[{"gameId":"1","gameName":"哈哈"},{& ...

  10. StreamWrite类

    FileStream类,该对象只能以字节形式读取/写入数据,这就使得操作非常困难. 一般有了FileStream对象,都会借用StreamWrite对象或StreamReader对象的方法来处理文件. ...