下面将通过以下步骤说明如何使用MyBatis开发一个简单的DEMO:

步骤一:新建表STUDENTS

  字段有: Stu_Id、Stu_Name、Stu_Age、Stu_Birthday

  1. CREATE TABLE `student` (
  2. `Stu_Id` bigint(20) NOT NULL AUTO_INCREMENT ,
  3. `Stu_Name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL ,
  4. `Stu_Age` int(4) NULL DEFAULT NULL ,
  5. `Stu_Birthday` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
  6. PRIMARY KEY (`Stu_Id`)
  7. )
  8. ENGINE=InnoDB
  9. DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
  10. AUTO_INCREMENT=1
  11. ;

步骤二:新建Maven项目,添加相关的依赖包

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.mybatis</groupId>
  4. <artifactId>mybatis</artifactId>
  5. <version>3.2.2</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. <version>5.1.22</version>
  11. <scope>runtime</scope>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.slf4j</groupId>
  15. <artifactId>slf4j-api</artifactId>
  16. <version>1.7.5</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.slf4j</groupId>
  20. <artifactId>slf4j-log4j12</artifactId>
  21. <version>1.7.5</version>
  22. <scope>runtime</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>log4j</groupId>
  26. <artifactId>log4j</artifactId>
  27. <version>1.2.17</version>
  28. <scope>runtime</scope>
  29. </dependency>
  30. <dependency>
  31. <groupId>junit</groupId>
  32. <artifactId>junit</artifactId>
  33. <version>4.11</version>
  34. <scope>test</scope>
  35. </dependency>
  36. </dependencies>

步骤三:新建mybatis-config.xml 和映射器StudentMapper.xml配置文件

mybatis-config.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <typeAliases>
  6. <typeAlias alias="Student" type="com.MyBatisDemo.domain.Student" />
  7. </typeAliases>
  8. <environments default="development">
  9. <environment id="development">
  10. <transactionManager type="JDBC" />
  11. <dataSource type="POOLED">
  12. <property name="driver" value="com.mysql.jdbc.Driver" />
  13. <property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo" />
  14. <property name="username" value="root" />
  15. <property name="password" value="123123" />
  16. </dataSource>
  17. </environment>
  18. </environments>
  19. <mappers>
  20. <mapper resource="com/MyBatisDemo/mappers/StudentMapper.xml" />
  21. </mappers>
  22. </configuration>

StudentMapper.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.MyBatisDemo.mappers.StudentMapper">
  5. <resultMap type="Student" id="StudentResult">
  6. <id property="stuId" column="Stu_Id" />
  7. <result property="StuName" column="Stu_Name" />
  8. <result property="StuAge" column="Stu_Age" />
  9. <result property="StuBirthday" column="Stu_Birthday" />
  10. </resultMap>
  11.  
  12. <select id="findStudentById" parameterType="int" resultType="Student">
  13. SELECT Stu_Id, Stu_Name, Stu_Age, Stu_Birthday
  14. FROM STUDENT WHERE Stu_Id=#{Id}
  15. </select>
  16. </mapper>

步骤四:新建建MyBatisSqlSessionFactory单例模式类

  1. package com.MyBatisDemo.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5.  
  6. import org.apache.ibatis.io.Resources;
  7. import org.apache.ibatis.session.SqlSession;
  8. import org.apache.ibatis.session.SqlSessionFactory;
  9. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  10.  
  11. public class MyBatisSqlSessionFactory {
  12. private static SqlSessionFactory sqlSessionFactory;
  13.  
  14. public static SqlSessionFactory getSqlSessionFactory() {
  15. if (sqlSessionFactory == null) {
  16. InputStream inputStream;
  17. try {
  18. inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  19. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. throw new RuntimeException(e.getCause());
  23. }
  24. }
  25. return sqlSessionFactory;
  26. }
  27.  
  28. public static SqlSession openSession() {
  29. return getSqlSessionFactory().openSession();
  30. }
  31. }

步骤五:新建映射器StudentMapper 接口和 StudentService 类

StudentMapper.java

  1. package com.MyBatisDemo.mappers;
  2.  
  3. import com.MyBatisDemo.domain.Student;
  4.  
  5. public interface StudentMapper {
  6. Student findStudentById(Integer id);
  7. }

StudentService.java

  1. package com.MyBatisDemo.service;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5.  
  6. import com.MyBatisDemo.domain.Student;
  7. import com.MyBatisDemo.mappers.StudentMapper;
  8. import com.MyBatisDemo.util.MyBatisSqlSessionFactory;
  9.  
  10. public class StudentService {
  11. private Logger logger = LoggerFactory.getLogger(getClass());
  12.  
  13. public Student findStudentById(Integer studId)
  14. {
  15. SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
  16. try
  17. {
  18. StudentMapper studentMapper =
  19. sqlSession.getMapper(StudentMapper.class);
  20. return studentMapper.findStudentById(studId);
  21. }
  22. finally
  23. {
  24. sqlSession.close();
  25. }
  26. }
  27. }

步骤六:新建一个JUnit 测试类来测试 StudentService

  1. package com.MyBatisDemo;
  2.  
  3. import org.junit.AfterClass;
  4. import org.junit.BeforeClass;
  5. import org.junit.Test;
  6.  
  7. import com.MyBatisDemo.domain.Student;
  8. import com.MyBatisDemo.service.StudentService;
  9. public class StudentServiceTest
  10. {
  11. private static StudentService studentService;
  12. @BeforeClass
  13. public static void setup()
  14. {
  15. studentService = new StudentService();
  16. }
  17. @AfterClass
  18. public static void teardown()
  19. {
  20. studentService = null;
  21. }
  22.  
  23. @Test
  24. public void testFindStudentById()
  25. {
  26. Student student = studentService.findStudentById(1);
  27. //Assert.assertNotNull(student);
  28. System.out.println(student);
  29. }
  30. }

首先配置了MyBatis最主要的配置文件mybatis-config.xml,里面包含了JDBC连接参数;

配置了映射器Mapper XML配置文件文件,里面包含了SQL语句的映射。

使用mybatis-config.xml内的信息创建了SqlSessionFactory对象。每个数据库环境应该就一个SqlSessionFactory对象实例,所以使用了单例模式只创建一个SqlSessionFactory实例。

创建了一个映射器Mapper接口StudentMapper,其定义的方法签名和在StudentMapper.xml中定义的完全一样(即映射器Mapper接口中的方法名跟StudentMapper.xml中的id的值相同)。注意StudentMapper.xml中namespace的值被设置成com.MyBatisDemo.mappers.StudentMapper,是StudentMapper接口的完全限定名。这使我们可以使用接口来调用映射的SQL语句。

Mybatis入门DEMO的更多相关文章

  1. Mybatis入门Demo(单表的增删改查)

    1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...

  2. 最基础的mybatis入门demo

    demo结构 数据库情况 (不会转sql语句 骚瑞) 数据库连接信息 jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:m ...

  3. MyBatis 入门Demo

    新建数据库my_db,新建表student_tb id为主键,不自动递增. 不必插入数据. 下载MyBatis https://github.com/mybatis/mybatis-3/release ...

  4. Mybatis入门和简单Demo

    一.Mybatis的诞生 回顾下传统的数据库开发,JDBC和Hibernate是使用最普遍的技术,但这两种ORM框架都存在一定的局限性: JDBC:最原生的技术,简单易学,执行速度快,效率高,适合大数 ...

  5. 【SSH系列】初识spring+入门demo

    学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...

  6. netty入门demo(一)

    目录 前言 正文 代码部分 服务端 客服端 测试结果一: 解决粘包,拆包的问题 总结 前言 最近做一个项目: 大概需求: 多个温度传感器不断向java服务发送温度数据,该传感器采用socket发送数据 ...

  7. SpringBoot 入门 Demo

    SpringBoot   入门 Demo Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从 ...

  8. 写给新手看的 MyBatis 入门

    目录 MyBatis 使用前的准备 什么是 MyBatis 使用Maven 进行 MyBatis 开发环境搭建 MyBatis 入门 项目整体结构一览 MyBatis 的简单生命周期 1.获取 Sql ...

  9. springboot + mybatisPlus 入门实例 入门demo

    springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用ma ...

随机推荐

  1. JavaScript基本知识

    如何把 JavaScript 放入 HTML 页面 如果需要把一段 JavaScript 插入 HTML 页面,我们需要使用 <script> 标签(同时使用 type 属性来定义脚本语言 ...

  2. Greenplum 源码安装教程 —— 以 CentOS 平台为例

    Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...

  3. Ubuntu 15.1 unity在顶部面板显示系统CPU/内存/网络速度

    全部的文件:http://files.cnblogs.com/files/xiaobo-Linux/ubuntu%E6%98%BE%E7%A4%BA%E7%B3%BB%E7%BB%9F%E7%BD%9 ...

  4. Pwn~

    Pwn Collections Date from 2016-07-11 Difficult rank: $ -> $$... easy -> hard CISCN 2016 pwn-1 ...

  5. 1869: Mathematics and Geometry

    这是郑州轻工业学校的一次校赛的校内选拔赛,看名字是计算几何 的题 题目地址: http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1869 Descript ...

  6. Winform进程、线程

    进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程要使用的类是:Process它在命名空间:System.Diagnostics; 1.静态方法Start(); 2 ...

  7. c#根据绝对路径获取 带后缀文件名、后缀名、文件名

    zz   C#根据绝对路径获取 带后缀文件名.后缀名.文件名 1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. string str =" F:\test\Default.aspx& ...

  8. [bzoj3932][CQOI2015][任务查询系统] (主席树)

    Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si ...

  9. ngx_http_upstream_module模块.md

    ngx_http_upstream_module ngx_http_upstream_module模块用于定义可由proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pas ...

  10. [LeetCode] Fizz Buzz 嘶嘶嗡嗡

    Write a program that outputs the string representation of numbers from 1 to n. But for multiples of ...