MyBatis起步

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

基本使用方法如下:

一、准备数据表

首先创建一个数据库mybatis并在mybatis数据库下创建usertable 表

CREATE TABLE usertable (
  id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(10) DEFAULT NULL,
  sex int(11) DEFAULT NULL,
  address varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 |

随便加入一些测试数据:

MyBatis起步_第1张图片

二、进入正题

1、创建工程

打开eclipse创建一个Java工程,在工程中加入Junit4依赖方便测试,目录结构如下:

MyBatis起步_第2张图片

添加mybatis依赖和数据库连接驱动:

mybatis-3.2.7.jar

mysql-connector-java-5.1.7-bin.jar

2、在com.po包下写一个封装数据的简单类User,添加getters、setters和toString方法

package com.po;

public class User {
	private int id;
	private String username;
	private int sex;
	private String address;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public int getSex() {
		return sex;
	}
	public void setSex(int sex) {
		this.sex = sex;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", address=" + address + "]";
	}
}

3、全局配置文件

首先是一个全局配置文件(名称可以自己制定),我这里取名为SqlMapConfig.xml内容如下:






	
		
		
			
		
			
				
				
				
				
			
		
	
	

	

注意这里的mappers标签,接下来还要添加东西。

4、创建mapper

在config文件夹下创建一个folder名为mapper

在mapper下创建UserMapper.xml(要注意命名规范)





	
	
	
		insert into usertable(username, sex,address) values(#{username}, #{sex}, #{address})
	
这里封装了两个数据库操作

注意这里的namespace属性为com.dao.UserMapper这是我们要定义的接口的全限定类名,我们要定义一个接口,mybatis就会自动依据mapper配置文件自动生成代理类,这样就可以通过调用接口中的方法来实现对数据库的操作了。

在写完mapper配置文件后要记得在第三部的全局配置文件中注册该mapper。方法为:在标签中添加:


5、定义dao接口

在定义dao接口之前要知道,接口和上面定义的mapper是一一对应的。对应规范如下:

1、 Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同 (一个sql语句就是一个statement)
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

package com.dao;

import com.po.User;

public interface UserMapper {
	public User findUserById(int id) throws Exception;
	public void insertUser(User user) throws Exception;
}

三、测试

接下来可以写一个测试类测试一下了:

package com.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.Before;
import org.junit.Test;

import com.dao.UserMapper;
import com.po.User;

public class TestUserMapper {
	private SqlSessionFactory sqlSessionFactory;
	
	@Before
	public void setUp() throws IOException{
		String resource = "SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}

	
	@Test
	public void testFindUserById() throws Exception{
		//获取session
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//获取mapper接口的代理对象
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		//调用代理对象的方法
		User user = userMapper.findUserById(9);
		System.out.println(user);
		
		sqlSession.close();
	}

}

简单说明一下,mybatis的使用流程是这样的:

setUp方法中的代码可以作为一个模板来使用,在这个方法中最后通过SqlSessionFactoryBuilder来创建一个SqlSessionFactory的实例,对于所有的sql操作一个实例就够了。

然后在每个dao方法中都要由SqlSessionFactory来创建一个SqlSession实例

调用getMapper方法传入UserMapper的类类型生成代理对象,而后就可以进行增删改查操作了

最后切记要关闭sqlSession释放资源。


执行测试方法可以看到输出:

User [id=9, username=kitty, sex=1, address=NewYork]



你可能感兴趣的:(javaEE-SSM)