`
longying2008
  • 浏览: 302054 次
社区版块
存档分类
最新评论

【MyBatis入门】—— 第一个MyBatis应用

阅读更多

1.创建STUDENTS表并插入一些数据:

-- 创建数据库
CREATE DATABASE mybatis;
-- 使用数据库
USE mybatis;
-- 创建表
CREATE TABLE STUDENT (
	id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'PK',
	name VARCHAR(30) NOT NULL COMMENT '名称',
	email VARCHAR(30) NOT NULL COMMENT '邮箱',
	dob DATE DEFAULT NULL,
	PRIMARY KEY(id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=gbk COMMENT '学生表';
-- 插入数据
INSERT INTO STUDENT(name, email, dob) VALUES('student1', 'student1@qq.com', '1990-01-01');
INSERT INTO STUDENT(name, email, dob) VALUES('student2', 'student2@qq.com', '1990-02-02');

 

2. 创建一个总的目录(文件夹名为mybatis-demos),用于存放所有的MyBatis应用示例

 

3. 打开DOS命令行窗体,进入到上面创建的文件夹mybatis-demos。使用Maven Archetype生成项目骨架:

3.1 输入命令:mvn archetype:generate

 

 3.2 在运行到“Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 580:”和“Choose org.apache.maven.archetypes:maven-archetype-quickstart version:”外时直接敲回车


 

3.3 输入项目的groupId、artifactId、version、package,然后检查输入的groupId、artifactId、version、package信息是否正确,输入“Y”确认

 

使用Maven Archetype生成的项目的目录结构:

 

4. 修改mybatis-demo-01文件夹下的pom.xml文件,添加项目运行需要的依赖:

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.7</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-log4j12</artifactId>
    <version>1.7.7</version>
  </dependency>
</dependencies>

 

5. 在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新domain文件夹,然后在domain文件夹下创建Student实体类:

Student.java

package com.github.wangguocheng.mybatis.demo.domain;

import java.util.Date;

public class Student {

	private long id;
	private String name;
	private String email;
	private Date dob;
	
	public Student() {}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getDob() {
		return dob;
	}

	public void setDob(Date dob) {
		this.dob = dob;
	}
	
}

 

6.在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新建mapper文件夹,然后在mapper文件夹下创建StudentMapper类及StudentMapper.xml映射文件:

StudentMapper.java

package com.github.wangguocheng.mybatis.demo.mapper;

import java.util.List;

import com.github.wangguocheng.mybatis.demo.domain.Student;

public interface StudentMapper {
	
	public void insertStudent(Student student);

	public List<Student> findAllStudents();
	
	public Student findStudentById(long id);
}

 

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.github.wangguocheng.mybatis.demo.mapper.StudentMapper">
  <resultMap type="Student" id="StudentResultMap">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="email" column="email"/>
    <result property="dob" column="dob"/>
  </resultMap>
  <select id="insertStudent" parameterType="Student">
    INSERT INTO STUDENT(name, email, dob)
    VALUES(#{name}, #{email}, #{dob})
  </select>
  <select id="findAllStudents" resultMap="StudentResultMap">
    SELECT * FROM STUDENT
  </select>
  <select id="findStudentById" resultMap="StudentResultMap" parameterType="long">
    SELECT * FROM STUDENT WHERE id = #{id}
  </select>
</mapper>

 

7. 在mybatis-demo-01\src\main文件夹下新建resources文件夹,然后在resources文件夹下创建mybatis配置文件及log4j配置文件

mybaits.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 type="com.github.wangguocheng.mybatis.demo.domain.Student" alias="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/mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="abc123"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/github/wangguocheng/mybatis/demo/mapper/StudentMapper.xml"/>
  </mappers>
</configuration>

 

log4j.properties

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n

 

8. 在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新建util文件夹,然后在util文件夹下创建工具类

MyBatisSqlSessionFactory.java

package com.github.wangguocheng.mybatis.demo.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 = null;
			try {
				inputStream = Resources.getResourceAsStream("mybatis.xml");
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			} catch(IOException e) {
				throw new RuntimeException(e.getCause());
			}
		}
		return sqlSessionFactory;
	}
	
	public static SqlSession openSession() {
		return getSqlSessionFactory().openSession();
	}
}

 

9. 修改pom.xml文件,在<build>节点下添加如下代码:

<resources>
  <resource>
    <directory>src/main/java</directory>
	<includes>
	  <include>**/*.xml</include>
	</includes>
	<filtering>true</filtering>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
  </resource>
</resources>

 

10. 在mybatis-demo-01\src\main\java\com\github\wangguocheng\mybatis\demo文件夹下新建service文件夹,然后在service文件夹下创建StudentService类

StudentService.java

package com.github.wangguocheng.mybatis.demo.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.github.wangguocheng.mybatis.demo.domain.Student;
import com.github.wangguocheng.mybatis.demo.mapper.StudentMapper;
import com.github.wangguocheng.mybatis.demo.util.MyBatisSqlSessionFactory;

public class StudentService {

	private Logger logger = LoggerFactory.getLogger(getClass());
	
	public List<Student> findAllStudents() {
		SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
		try {
			StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
			return studentMapper.findAllStudents();
		} finally {
			sqlSession.close();
		}
	}
	
	public Student findStudentById(Long id) {
		logger.debug("Select Student By ID :{}", id);
		SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
		try {
			StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
			return studentMapper.findStudentById(id);
		} finally {
			sqlSession.close();
		}
	}
	
	public void createStudent(Student student) {
		SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
		try {
			StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
			studentMapper.insertStudent(student);
			sqlSession.commit();
		} finally {
			sqlSession.close();
		}
	}
}

 

11. 在mybatis-demo-01\src\test\java\com\github\wangguocheng\mybatis\demo\service文件夹下新建service文件夹,然后在service文件夹下创建StudentServiceTest类

StudentServiceTest.java

package com.github.wangguocheng.mybatis.demo.service;

import java.util.Date;
import java.util.List;

import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import com.github.wangguocheng.mybatis.demo.domain.Student;

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 testFindAllStudents() {
		List<Student> students = studentService.findAllStudents();
		Assert.assertNotNull(students);
		for(Student student : students) {
			System.out.println(student);
		}
	}
	
	@Test
	public void testFindStudentById() {
		Student student = studentService.findStudentById(1L);
		Assert.assertNotNull(student);
		System.out.println(student);
	}
	
	@Test
	public void testCreateStudent() {
		Student student = new Student();
		student.setName("new-student-02");
		student.setEmail("new-student-02@163.com");
		student.setDob(new Date());
		studentService.createStudent(student);
	}
}

 

12. 在DOS命令窗体中进入mybatis-demo-01文件夹,并运行命令mvn clean test

 

项目源码见随附件

  • 大小: 5.3 KB
  • 大小: 6.5 KB
  • 大小: 15.4 KB
  • 大小: 8.8 KB
  • 大小: 1.4 KB
分享到:
评论

相关推荐

    Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf

    这份文档名为《Java EE 框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...

    spring源码解析和mybatis学习

    1. **MyBatis入门**:安装和配置MyBatis,创建第一个Mapper和SqlSession。 2. **XML配置与注解**:两种声明SQL语句的方式,理解动态SQL的使用。 3. **Mapper接口**:通过接口定义SQL操作,利用MyBatis的自动映射功能...

    带大家读源码——mybatis generator第一期

    该课程选择了一个比较小,比较简单的框架入门,相信大家应该也用过该工具——mybatis generator 【内容】 该课程内容如下,列出了具体时间,便于复习: 第一课:mybatis-generator源码分析-解析配置 这节课分为如下...

    day01_eesy_01mybatis.zip

    学习笔记——mybatis的起步(1) 1.什么是框架? 他是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高...

    javaee 习题答案.docx完整详细

    Java EE 框架整合开发入门到实战——Spring+SpringMVC+MyBatis(微课版)习题答案详细解析 Java EE 框架整合开发入门到实战——Spring+SpringMVC+MyBatis(微课版)习题答案详细解析中,涵盖了 Spring 框架的核心...

    java编程 入门第一步 jdk安装 路径增加 第一个java范例

    本文将详细讲解Java编程的“第一步”——JDK的安装、环境变量配置以及编写并运行你的第一个Java程序。 首先,我们来了解一下JDK(Java Development Kit)。JDK是Oracle公司提供的Java开发工具包,包含了编译Java源...

    Java EE轻量级框架应用实战 课程教学大纲.docx

    1. **第1章 初识MyBatis框架** - **内容概述**:介绍MyBatis框架的基本概念、工作原理以及如何构建一个简单的MyBatis应用程序。 - **关键词**:MyBatis框架、ORM(对象关系映射)、配置文件、映射文件等。 - **...

    mybait生成工具

    MyBatis 是一款深受开发者喜爱的持久层框架,它提供了灵活的SQL映射和对象关系映射功能,简化了Java应用程序与数据库之间的交互。MyBatis Generator(MBG)是MyBatis的一个辅助工具,用于自动生成MyBatis的Mapper...

    spring入门(一)

    这篇教程将带你迈出Spring框架学习的第一步。 首先,我们要了解Spring的核心概念——依赖注入(DI)。在传统的Java程序中,对象通常自行创建其依赖项,这导致了代码紧密耦合,不易测试和维护。而Spring通过DI模式,...

    spring快速入门教程.rar

    在"spring快速入门教程.pdf"中,你将逐步学习如何搭建Spring环境、配置项目、编写第一个Hello World示例,以及逐步深入到更复杂的概念和实践。同时,"~看速度.exe"、"~看速度.fla"和"~看速度.swf"可能是辅助教学的...

    SpringBoot基础入门笔记

    内容概要:包含SpringBoot——初始SpringBoot,SpringBoot的基本配置(多环境开发、yaml等)、整合第三方技术(JUnit,Mybatis,SSM)适合人群:有一定的maven,SpringMVC基础文件内容:压缩包分为两部分,笔记和...

    2021年最新Java后端学习路线,适用于所有想要踏入Java行业的初学者(csdn)————程序.pdf

    以下是一份2021年更新的Java后端学习路线,旨在帮助入门者逐步深入Java世界。 首先,基础阶段是学习任何编程语言的关键。在Java的世界里,你需要掌握基础语法、数据类型、方法、面向对象编程概念以及异常处理。理解...

    spring入门实例代码

    Spring 框架是 Java 开发领域中一个非常重要的轻量级框架,它以其依赖注入(Dependency Injection,DI)和...实践是检验真理的唯一标准,所以动手尝试这些代码,理解其背后的原理,是你迈向Spring开发专家的第一步。

    ibatis入门教程与开发指南

    - **iBATIS-SqlMaps-2-Tutorial_cn.pdf**: 这是Ibatis 2.x的教程,涵盖了从安装、创建第一个项目到实际操作的示例。通过这个教程,读者可以快速掌握如何在实际开发中使用Ibatis,包括数据库连接、编写Mapper XML文件...

    spring入门学习-hello,world

    创建Spring项目的第一步通常是配置Spring IoC容器。这可以通过XML配置文件或者基于注解的配置来完成。在本例中,我们可能有一个名为`applicationContext.xml`的XML配置文件,其中定义了bean的声明,例如: ```xml ...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring.zip,需要的可以下载

    3. `spring-02-hellospring`:通常这是初学者入门Spring时创建的第一个示例,展示如何使用Spring来创建一个简单的Hello World应用程序,涉及到Spring的IoC容器的使用。 4. `spring-04-di`:这部分可能详细讲解了...

    spring5学习笔记

    "3、HelloSpring.md"通常作为Spring入门的第一个示例,展示了如何创建一个简单的Spring应用,帮助初学者快速上手。 综上所述,Spring5的学习涵盖了从基础到高级的各种主题,包括依赖注入、面向切面编程、事务管理、...

Global site tag (gtag.js) - Google Analytics