转: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. Autel MaxiSys Pro Description

    Autel MaxiSys pro MS908P is an evolutionary smart solution for specialized automotive diagnosis and ...

  2. JavaWeb xss攻击

    出处: http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html XSS 全称(Cross Site Scripting) 跨站脚 ...

  3. Robot Framework 的安装和配置

    Robot Framework 的安装和配置 在使用 RF(Rebot framework)的时候需要 Python 或 Jython 环境,具体可根据自己的需求来确定.本文以在有 Python 的环 ...

  4. linux解压大全

    .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gun ...

  5. [转]AngularJS 使用 UI Router 实现表单向导

    本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的 ...

  6. Android平台网络常用命令

    工作中经常用到的一些命令,整理一下,方便以后进行参考 1.IP设置 ifconfig eth0 128.224.156.81 up  //一般的嵌入式linux中设置IP.ifconfig eth0 ...

  7. 虚拟机中Centos7搭建本地仓库

    iso放入光驱(虚拟机光驱)后,设备目录是/dev/sr0 表示光驱,被挂载道 /run/media/c4t/CentOS\ 7\ x86_64目录下 [c4t@localhost ~]$ df文件系 ...

  8. anaular js loadding效果

    以前用的jquery的时候,用ajax实现,比较好弄,下面是angularjs的方式: //body下面增加div <div data-loading></div> //dir ...

  9. C#获取文件格式图标关联应用程序图标

    class SystemIcon { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct SHFIL ...

  10. 基于vue-cli 将webpack3 升级到 webpack4 配置

       升级webpack4前 先删除之前的webpack, babel-loader  下载 webpack npm i -D webpack@4 webpack-cli@3 webpack-dev- ...