MyBatis基础用法--HelloWorld

目录

MyBatis简介

搭建MyBatis环境

创建数据库表

创建Java项目

导入Jar包

创建实体类

添加MyBatis全局配置

添加Mapper配置

创建ClassMapper接口

编写测试代码


MyBatis简介

MyBatis原是Apache的一个开源项目iBatis(“internet”和“abatis”的组合),2010年这个项目由Apache software foundation 迁移到了Google Code,并正式改名为MyBatis。项目代码于2013年11月迁移到Github,下载地址:

https://github.com/mybatis/mybatis-3

MyBatis 是一款非常优秀的持久化层框架,有以下几个特点:

  1. 支持定制化 SQL、存储过程以及高级映射;

  2. 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集;

  3. 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJO对象映射成数据库中的记录。 

搭建MyBatis环境

创建数据库表

在MySQL数据库中创建两张表:tbl_student(学生表)和tbl_class(班级表)。 

/**创建学生表**/
CREATE TABLE tbl_student 
(
	STUDENT_ID         BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
	STUDENT_NAME       VARCHAR(10) NOT NULL,  
	STUDENT_GENDER     VARCHAR(10),  
	STUDENT_BIRTHDAY   DATE,
	STUDENT_AGE        INT,
	CLASS_ID           VARCHAR(255)  
 );
/**创建班级表**/
CREATE TABLE tbl_class 
(
	CLASS_ID           BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
	CLASS_NAME         VARCHAR(10) NOT NULL
);

/**插入班级数据**/  
INSERT INTO tbl_class 
(
	CLASS_ID,CLASS_NAME
)  
VALUES
(
	201709,'三年二班'
)  
/**插入学生数据**/  
INSERT INTO tbl_student 
(
	STUDENT_ID,STUDENT_NAME,STUDENT_GENDER,  
	STUDENT_BIRTHDAY,STUDENT_AGE,CLASS_ID 
)  
VALUES
(
	20060309,'苏沐寒','男','1988-08-01',25,201709
),
(
	20060321,'龙雨晴','女','1988-01-27',25,201709
)  

创建Java项目

导入Jar包

如果要在项目中使用 MyBatis, 只需将MyBatis的核心jar文件mybatis-x.x.x.jar添加到你的项目构建路径中即可。
如果使用 Maven 来构建项目,则需要在 pom.xml 文件中添加相应的依赖配置,配置内容如下: 

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

为了能够连接MySQL数据库,还需要导入mysql-connector-java-x.x.x.jar

所需Jar包已上传至CSDN,资源地址:http://download.csdn.net/download/pengjunlee/9992720 

创建实体类

创建好的学生和班级实体类代码如下。  

package org.mybatis.entity;

import java.util.Date;

public class StudentEntity {

	private Long studentId;

	private String studentName;

	private String studentGender;

	private Date studentBirthday;

	private Integer studentAge;

	private Long classId;
	
	private String className;

	//此处省略get和set方法

	@Override
	public String toString() {
		return "StudentEntity [studentId=" + studentId + ", studentName="
				+ studentName + ", studentGender=" + studentGender
				+ ", studentBirthday=" + studentBirthday + ", studentAge="
				+ studentAge + ", classId=" + classId + ", className="
				+ className + "]";
	}

}
package org.mybatis.entity;

import java.util.List;

public class ClassEntity {

	private Long classId;

	private String className;

	private List<StudentEntity> students;

	//此处省略get和set方法

	@Override
	public String toString() {
		return "ClassEntity [classId=" + classId + ", className=" + className
				+ ", students=" + students + "]";
	}

}

添加MyBatis全局配置

MyBatis全局配置文件用途很多,包括:数据源配置、事务管理配置、类型处理器配置、类别名配置等,此处不作详细介绍,为了示例仅对数据源和Mapper文件路径进行配置。  

<?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>
  <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="用户名"/>
        <property name="password" value="密码"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper/StudentMapper.xml"/>
    <mapper resource="mapper/ClassMapper.xml"/>
  </mappers>
</configuration>

添加Mapper配置

创建好的StudentMapper.xmlClassMapper.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="StudentMapper">
	<select id="selectStudentById" resultType="org.mybatis.entity.StudentEntity">
		select STUDENT_ID
		studentId,STUDENT_NAME studentName,STUDENT_GENDER studentGender,
		STUDENT_BIRTHDAY studentBirthday,STUDENT_AGE studentAge,CLASS_ID
		classId from tbl_student where STUDENT_ID =
		#{studentId}
	</select>
</mapper>
<?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">
<!-- 名称空间与 org.mybatis.mapper.ClassMapper接口绑定 -->
<mapper namespace="org.mybatis.mapper.ClassMapper">
	<!-- select标签的id属性与 ClassMapper接口中的方法名进行绑定 -->
	<select id="selectClassById" parameterType="long"
		resultType="org.mybatis.entity.ClassEntity">
		select CLASS_ID classId,CLASS_NAME className from tbl_class
		where
		CLASS_ID=#{classId}
	</select>
</mapper>

创建ClassMapper接口

ClassMapper.xml的名称空间与ClassMapper接口进行绑定,可以通过接口调用的方式执行SQL,此种方式能够帮助我们进行安全类型检查,具有更高的安全性,推荐使用这种方式进行编程。

ClassMapper接口声明如下。 

package org.mybatis.mapper;

import org.mybatis.entity.ClassEntity;

public interface ClassMapper {

	
	public ClassEntity selectClassById(Long classId);
}

编写测试代码

编写一个JUnit测试类进行测试。  

package org.mybatis.test;

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;
import org.junit.Test;
import org.mybatis.entity.ClassEntity;
import org.mybatis.entity.StudentEntity;
import org.mybatis.mapper.ClassMapper;

public class MybatisTest {

	@Test
	public void test() throws IOException {
		
		// 指定mybatis全局配置文件路径
		String resource = "mybatis-config.xml";
		
		// 使用Resources工具类来获取classpath或其它位置的配置文件
		InputStream inputStream = Resources.getResourceAsStream(resource);
		
		// 由SqlSessionFactoryBuilder从 XML中构建 SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream);
		
		// 从 SqlSessionFactory 中获取 SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();

		try {

			//通过 SqlSession 实例直接执行已映射的 SQL语句
			StudentEntity student = sqlSession.selectOne(
					"StudentMapper.selectStudentById", 20060309L);
			System.out.println(student);
			
			//通过 SqlSession 实例来获取接口的实现类,通过接口的实现类执行已映射的 SQL语句
			ClassMapper classMapper=sqlSession.getMapper(ClassMapper.class);
			ClassEntity clazz = classMapper.selectClassById(201709L);
			System.out.println(clazz);
			
		} finally {
			//用完记得关闭sqlSession
			if (null != sqlSession) {
				sqlSession.close();
			}
		}

	}

}

执行结果如下:  

StudentEntity [studentId=20060309, studentName=苏沐寒, studentGender=男, studentBirthday=Mon Aug 01 00:00:00 CDT 1988, studentAge=25, classId=201709, className=null]

ClassEntity [classId=201709, className=三年二班, students=null]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值