J2EE系列之MyBatis学习笔记(一)-- 简介

目前为止J2EE系列已经学习了Struts2、Hibernate4、Spring、SpringMVC。其中Struts2、hibernate,spring三者组成了常用的软件架构S2SH,在S2SH中Struts2负责前后台之间的交互,Hibernate负责数据库操作,Spring负责管理struts2和hibernate4。学习了SpringMVC之后发现SpringMVC具有了Struts2和Spring的功能。软件架构中要想使用SpringMVC的话,还需要一个操作数据库的工具。已经知道的操作数据库工具可以使用JDBC和Hibernate。今天再学习一个操作数据库的工具MyBatis,SpringMVC经常和MyBatis一起使用。SpringMVC和MyBatis两者形成了一个新的软件架构SSM,这个架构是目前非常流行的一种架构。

一、MyBatis简介:看一下百度百科

J2EE系列之MyBatis学习笔记(一)-- 简介_第1张图片

J2EE系列之MyBatis学习笔记(一)-- 简介_第2张图片

下载:百度MyBatis,找到下载地址下载即可:

J2EE系列之MyBatis学习笔记(一)-- 简介_第3张图片

目前为止最新的版本是mybatis-3.4.4。我们工程使用的是3.2.8版本。

二、实例

1.打开mysql数据库,新建一个数据库db_mybatis,数据库中新建表格t_student:


这个表中添加了一条数据。在使用Hibernate的时候不需要手工创建数据表,因为Hibernate是对象关系型数据库。使用MyBatis的时候需要手动创建数据表。

2.新建Java Project工程:MyBatisPro01

3.与使用Hibernate类似,使用MyBatis也要进行配置。工程src目录下新建配置文件mybatis-config.xml:




	
	
		
	
	
		
			
			
				
				
				
				
			
		
	
	
		
	


这个配置中首先是标签开始,属性(数据库连接需要的各种属性)的配置放置在了jdbc.properties文件中(

来引入这个文件)。标签为类型别名,这个标签中给类com.test.model.Student起了一个别名Student,工程中直接使用Student来代替com.test.model.Student这个类。进行环境配置,里面可以有很多的标签,这里只有一个。这里默认是开发环境(),一般企业一般有开发环境,测试环境,正式环境等。里面标签是我们定义的开发环境(中默认使用这个环境)。这个标签中定义了事务管理使用JDBC(后面会讲到还有Manager),下面标签配置数据源,类型是连接池(POOLED),里面的各个属性值使用EL表达式进行取值,这些值将会定义在jdbc.properties文件中。

最后是映射器,这里添加了一个映射文件StudentMapper.xml(这里还没有创建这个文件)

4.src目录下新建jdbc.properties文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_mybatis
jdbc.username=root
jdbc.password=123456

这里配置了连接数据库的各种属性值。

5.添加jar包:打开下载的mybatis3.2.8文件:其中lib文件夹下是可能用到的jar包,我们工程中使用mybatis-3.2.8.jar这个jar包即可。mybatis-3.2.8.pdf是对mybatis的介绍。

J2EE系列之MyBatis学习笔记(一)-- 简介_第4张图片

工程中新建mybatis和jdbc文件夹,分别把mybatis的jar包和jdbc的jar包复制进去,把这两个jar包add to build path。

J2EE系列之MyBatis学习笔记(一)-- 简介_第5张图片

6.新建Student类:位于com.test.model包

package com.test.model;

public class Student {

	private Integer id;
	private String name;
	private Integer age;
	
	public Student(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
	
}

7.要想操作数据库,首先要获取SqlSession(使用hibernate的时候也要先获取session工厂)对象建立数据库的连接。新建类SqlSessionFactoryUtil(com.test.util包中):

package com.test.util;

import java.io.InputStream;
import java.sql.Connection;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.session.TransactionIsolationLevel;

public class SqlSessionFactoryUtil {

	private static SqlSessionFactory sqlSessionFactory;
	
	public static SqlSessionFactory getSqlSessionFactory(){
		if(sqlSessionFactory == null){
			InputStream inputStream = null;
			try{
				inputStream = Resources.getResourceAsStream("mybatis-config.xml");
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return sqlSessionFactory;
	}
	
	public static SqlSession openSession(){
		return getSqlSessionFactory().openSession();
	}
}
使用的时候直接调用SqlSessionFactoryUtil.openSession()即可获取到SqlSession对象建立与数据库的连接。


8.之前数据库的操作都放在dao层(Hibernate也是放在dao层)。mybatis不使用dao层了,而是使用mappers层。工程中新建com.test.mappers包,里面新建接口StudentMapper:

package com.test.mappers;

import com.test.model.Student;

public interface StudentMapper {

	public int add(Student student);
}

这里定义了一个实现数据库添加的操作方法。这里和之前的类似,hibernate是把操作方法放在dao层接口中,把操作的实现代码放在dao.impl层。mybatis把操作方法放在mapper层,把操作实现放在一个配置文件中。com.test.mappers包中新建StudentMapper接口的实现文件StudentMapper.xml:





	
		insert into t_student values(null,#{name},#{age})
	

 
这个文件也就是mybatis-config.xml文件中引入的映射文件。这个文件中标签中namespace属性代表是哪个映射文件。标签实现数据添加,里面id的值与
StudentMapper接口中定义的方法名相同。parameterType标签代表传入参数类型,add方法中传入的是Student类对象,这里parameterType的值是Student。这里要特别注意一下,如果mybatis-config.xml文件中没有给com.test.model.Student这个类起别名为Student的话,这里parameterType的值要写这个类的完整类名。

标签中是数据库操作的sql语句,使用mybatis需要手动写sql语句。这个语句是向数据库中添加数据,sql语句中使用#{name},#{age}来获取传入的Student对象中对应的值。


9.新建测试类:新建com.test.service包,这个包中新建测试类StudentTest,这个类中写一个main方法作为测试方法。

package com.test.service;

import org.apache.ibatis.session.SqlSession;

import com.test.mappers.StudentMapper;
import com.test.model.Student;
import com.test.util.SqlSessionFactoryUtil;

public class StudentTest {

	public static void main(String[] args) {
		SqlSession sqlSession = SqlSessionFactoryUtil.openSession();
		StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
		Student student = new Student("李四",11);
		int result = studentMapper.add(student);
		sqlSession.commit();
		if(result > 0){
			System.out.println("添加成功");
		}
	}
}

main方法中首先调用SqlSessionFactoryUtil.openSession()来获取SqlSession对象建立与数据库的连接。通过sqlSession.getMapper(StudentMapper.class)获取到数据库操作类StudentMapper的对象studentMapper,然后直接调用这个对象的add方法即可。调用完后还要提交事务,完成数据库更新。


10.运行测试方法:控制台输出添加成功。

J2EE系列之MyBatis学习笔记(一)-- 简介_第6张图片

可以看到数据库中数据添加成功了。





你可能感兴趣的:(Java程序开发,MyBatis简介,MyBatis学习)