Mybatis入门DEMO
下面将通过以下步骤说明如何使用MyBatis开发一个简单的DEMO:
步骤一:新建表STUDENTS
字段有: Stu_Id、Stu_Name、Stu_Age、Stu_Birthday
- CREATE TABLE `student` (
- `Stu_Id` bigint(20) NOT NULL AUTO_INCREMENT ,
- `Stu_Name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL ,
- `Stu_Age` int(4) NULL DEFAULT NULL ,
- `Stu_Birthday` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
- PRIMARY KEY (`Stu_Id`)
- )
- ENGINE=InnoDB
- DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
- AUTO_INCREMENT=1
- ;
步骤二:新建Maven项目,添加相关的依赖包
- <dependencies>
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>3.2.2</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.22</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.7.5</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.5</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.11</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
步骤三:新建mybatis-config.xml 和映射器StudentMapper.xml配置文件
mybatis-config.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <typeAliases>
- <typeAlias alias="Student" type="com.MyBatisDemo.domain.Student" />
- </typeAliases>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC" />
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo" />
- <property name="username" value="root" />
- <property name="password" value="123123" />
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="com/MyBatisDemo/mappers/StudentMapper.xml" />
- </mappers>
- </configuration>
StudentMapper.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.MyBatisDemo.mappers.StudentMapper">
- <resultMap type="Student" id="StudentResult">
- <id property="stuId" column="Stu_Id" />
- <result property="StuName" column="Stu_Name" />
- <result property="StuAge" column="Stu_Age" />
- <result property="StuBirthday" column="Stu_Birthday" />
- </resultMap>
- <select id="findStudentById" parameterType="int" resultType="Student">
- SELECT Stu_Id, Stu_Name, Stu_Age, Stu_Birthday
- FROM STUDENT WHERE Stu_Id=#{Id}
- </select>
- </mapper>
步骤四:新建建MyBatisSqlSessionFactory单例模式类
- package com.MyBatisDemo.util;
- import java.io.IOException;
- import java.io.InputStream;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- public class MyBatisSqlSessionFactory {
- private static SqlSessionFactory sqlSessionFactory;
- public static SqlSessionFactory getSqlSessionFactory() {
- if (sqlSessionFactory == null) {
- InputStream inputStream;
- try {
- inputStream = Resources.getResourceAsStream("mybatis-config.xml");
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- } catch (IOException e) {
- e.printStackTrace();
- throw new RuntimeException(e.getCause());
- }
- }
- return sqlSessionFactory;
- }
- public static SqlSession openSession() {
- return getSqlSessionFactory().openSession();
- }
- }
步骤五:新建映射器StudentMapper 接口和 StudentService 类
StudentMapper.java
- package com.MyBatisDemo.mappers;
- import com.MyBatisDemo.domain.Student;
- public interface StudentMapper {
- Student findStudentById(Integer id);
- }
StudentService.java
- package com.MyBatisDemo.service;
- import org.apache.ibatis.session.SqlSession;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.MyBatisDemo.domain.Student;
- import com.MyBatisDemo.mappers.StudentMapper;
- import com.MyBatisDemo.util.MyBatisSqlSessionFactory;
- public class StudentService {
- private Logger logger = LoggerFactory.getLogger(getClass());
- public Student findStudentById(Integer studId)
- {
- SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
- try
- {
- StudentMapper studentMapper =
- sqlSession.getMapper(StudentMapper.class);
- return studentMapper.findStudentById(studId);
- }
- finally
- {
- sqlSession.close();
- }
- }
- }
步骤六:新建一个JUnit 测试类来测试 StudentService
- package com.MyBatisDemo;
- import org.junit.AfterClass;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import com.MyBatisDemo.domain.Student;
- import com.MyBatisDemo.service.StudentService;
- public class StudentServiceTest
- {
- private static StudentService studentService;
- @BeforeClass
- public static void setup()
- {
- studentService = new StudentService();
- }
- @AfterClass
- public static void teardown()
- {
- studentService = null;
- }
- @Test
- public void testFindStudentById()
- {
- Student student = studentService.findStudentById(1);
- //Assert.assertNotNull(student);
- System.out.println(student);
- }
- }
首先配置了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的更多相关文章
- Mybatis入门Demo(单表的增删改查)
1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...
- 最基础的mybatis入门demo
demo结构 数据库情况 (不会转sql语句 骚瑞) 数据库连接信息 jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:m ...
- MyBatis 入门Demo
新建数据库my_db,新建表student_tb id为主键,不自动递增. 不必插入数据. 下载MyBatis https://github.com/mybatis/mybatis-3/release ...
- Mybatis入门和简单Demo
一.Mybatis的诞生 回顾下传统的数据库开发,JDBC和Hibernate是使用最普遍的技术,但这两种ORM框架都存在一定的局限性: JDBC:最原生的技术,简单易学,执行速度快,效率高,适合大数 ...
- 【SSH系列】初识spring+入门demo
学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...
- netty入门demo(一)
目录 前言 正文 代码部分 服务端 客服端 测试结果一: 解决粘包,拆包的问题 总结 前言 最近做一个项目: 大概需求: 多个温度传感器不断向java服务发送温度数据,该传感器采用socket发送数据 ...
- SpringBoot 入门 Demo
SpringBoot 入门 Demo Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从 ...
- 写给新手看的 MyBatis 入门
目录 MyBatis 使用前的准备 什么是 MyBatis 使用Maven 进行 MyBatis 开发环境搭建 MyBatis 入门 项目整体结构一览 MyBatis 的简单生命周期 1.获取 Sql ...
- springboot + mybatisPlus 入门实例 入门demo
springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用ma ...
随机推荐
- JavaScript基本知识
如何把 JavaScript 放入 HTML 页面 如果需要把一段 JavaScript 插入 HTML 页面,我们需要使用 <script> 标签(同时使用 type 属性来定义脚本语言 ...
- Greenplum 源码安装教程 —— 以 CentOS 平台为例
Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...
- 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 ...
- Pwn~
Pwn Collections Date from 2016-07-11 Difficult rank: $ -> $$... easy -> hard CISCN 2016 pwn-1 ...
- 1869: Mathematics and Geometry
这是郑州轻工业学校的一次校赛的校内选拔赛,看名字是计算几何 的题 题目地址: http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1869 Descript ...
- Winform进程、线程
进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程要使用的类是:Process它在命名空间:System.Diagnostics; 1.静态方法Start(); 2 ...
- c#根据绝对路径获取 带后缀文件名、后缀名、文件名
zz C#根据绝对路径获取 带后缀文件名.后缀名.文件名 1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. string str =" F:\test\Default.aspx& ...
- [bzoj3932][CQOI2015][任务查询系统] (主席树)
Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si ...
- ngx_http_upstream_module模块.md
ngx_http_upstream_module ngx_http_upstream_module模块用于定义可由proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pas ...
- [LeetCode] Fizz Buzz 嘶嘶嗡嗡
Write a program that outputs the string representation of numbers from 1 to n. But for multiples of ...