转: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文件导入相关依赖

[html] view plaincopy
  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

[html] view plaincopy
  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

[plain] view plaincopy
  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

[html] view plaincopy
  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

[html] view plaincopy
  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

[java] view plaincopy
  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>

♦最后编写测试类

[java] view plaincopy
  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的数据,日志详细过程完美的打印在控制台

[sql] view plaincopy
  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

[java] view plaincopy
  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对象使用他来执行增删改查

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

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

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

转载于:https://www.cnblogs.com/zhanglijun/p/9140781.html

学习MyBatis之简单入门HelloWorld相关推荐

  1. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...

  2. CSS学习教程之简单入门

    层叠样式表(Cascading Style Sheet,简称:CSS)是为网页添加样式的代码.本学习教程主要介绍 CSS 的基础知识,并解答类似问题:怎样将文本设置为黑色或红色?怎样将内容显示在屏幕的 ...

  3. JMS学习(3):--ActiveMQ简单的HelloWorld实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

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

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

  5. 【Linux系统编程学习】 Makefile简单入门

    此为牛客网Linux C++课程1.10&1.11&1.12 的课程笔记. 0. Makefile介绍 1. Makefile文件命名与规则 示例: 使用vim编写如下名为Makefi ...

  6. 定时任务-Quartz、Mycat简单入门、Linux下安装MySQL、Linux下安装MyCAT、Mycat的数据库分片、Mycat读写分离

    表现层:页面 后台管理系统.商城门户.搜索系统.订单系统.商品详情系统.购物车系统 中间件:dubbo 系统之间的通信,服务的统计,rpc协议远程过程调用 同步通信 服务层:实现具体的业务逻辑 商品服 ...

  7. 【Java学习】从一个简单的HelloWorld项目中入门maven

    创建一个maven项目 这里推荐官方文档:maven官方文档 [注]此篇文章也是笔者学习笔记,如有错误,请见谅. [注]我把Goal翻译成命令.比如Plugin Goal: ps:我他喵的写了一大半的 ...

  8. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  9. Mybatis 一对多 结果集映射 简单入门 易懂

    Mybatis官方文档说明处 Mybatis 一对多 结果集映射 简单入门 易懂 一.搭建数据库环境 二.idea 搭建maven 项目 (mybatis-demo) 2.1.项目结构 2.2.导入依 ...

  10. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

最新文章

  1. 干货!神经网络原来是这样和数学挂钩的 // 深度学习的数学
  2. 生成静态页面的五种方案(转)
  3. 图文直播:Pokémon Go真爱粉与“脑残粉”之间的爱恨情仇
  4. 计算机专业开题报告指导老师意见评语,开题报告指导教师评语
  5. beetl 国内下载量貌似快跟freemaker的差不多了
  6. Windows核心编程调用打印机
  7. Drools规则引擎之动态规则
  8. VC2012换字体问题
  9. 2022-2027年中国衬衫行业市场调研及未来发展趋势预测报告
  10. 2018科大讯飞营销广告算法大赛
  11. 任务一:实现图形计算功能 1 关键算法(30 分)输入一个正方体的边长(a)计算正方体的体积。要求:结果保留两位小数,使用带参数的方法实现
  12. AndroidX全解析
  13. 小米电视相册在哪 android,小米电视官方详解“共享相册”功能
  14. JAVA语言程序设计 第十六章 (16.10、16.11、16.12、16.13、16.14、16.15、16.16)
  15. 用PHP写了个 标签 按点击率的 字体大小和颜色的 显示效果
  16. C/C++语言100题练习计划 97——素数对
  17. 计算机一级考试ps知识点,计算机一级考试PS备考训练题及答案
  18. 图解三次握手与四次挥手
  19. java定义接口区分飞机和汽车_JAVA菜鸟入门篇 - 抽象类、接口 (十九)
  20. JAVA开发方向和就业方向

热门文章

  1. 爬虫告诉你, 互联网大数据行业有多赚钱!
  2. 这么好的课程,竟然免费!!!
  3. sqldf包的使用使用-R
  4. 一年总结:2016.7.9 - 2017.7.9
  5. android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)...
  6. C#两路list数组归并去重
  7. 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)...
  8. C#实现请求服务器,类似于asp下的getHTTPPage(url)功能
  9. 自定义服务器控件的元数据属性(MSDN)
  10. ASP.NET弹出对话框的几种基本方法