Mybatis快速入门

Mybatis快速入门

1.mybatis的作用

项目中数据访问层的框架,他的主要作用其实就是我们和数据库进行交互的操作。替代我们在javaWeb中学习的JDBC技术。DButils其实是一个框架。

jsp:webDemo。

2.mybatis的环境搭建

2.1 去mybatis官网下载mybatis的依赖文件压缩包。

​ 我们需要拿到myabatis的jar包。

2.2 创建java项目

如果使用的是eclipse,那么在创建所有项目之前需要设置一下工作空间的编码格式,只要工作空间发生改变就需要重新设置。

Mybatis快速入门_第1张图片

解决乱码问题:

​ 三码合一。(数据库编码+服务器端代码+webpage的编码)

Mybatis快速入门_第2张图片

Mybatis快速入门_第3张图片

2.3 导入mybatis的jar和他的依赖包

JAVA项目中如何导入jar包?

Mybatis快速入门_第4张图片

Mybatis快速入门_第5张图片

导入jar包

​ mybatis的核心包:myabatis框架的实现

​ 日志包:log4J 记录运行产生的信息,包括错误信息和正确的执行流程信息

​ 驱动包:就是让Java代码和指定的数据库进行链接的一个外部实现类

jar包:外部给我们提供给的实现类,说白了就是组件。

Mybatis快速入门_第6张图片

2.3 数据库的设计

Mybatis快速入门_第7张图片

Mybatis快速入门_第8张图片

2.4 编写数据库表对应的Java的实体类(反向工程)

package com.qf.mybatis.pojo;
/**
 * 学生实体类
 * 注意在mybatis里面尽量让我们的基本类型定义Java包装类型
 */

import java.util.Date;

public class Student {
	private Integer stuId;
	
	private String stuName ;
	
	private Character stuSex;
	
	private Date stuBirthday;
	
	private Integer stuAge ;

	public Integer getStuId() {
		return stuId;
	}

	public void setStuId(Integer stuId) {
		this.stuId = stuId;
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public Character getStuSex() {
		return stuSex;
	}

	public void setStuSex(Character stuSex) {
		this.stuSex = stuSex;
	}

	public Date getStuBirthday() {
		return stuBirthday;
	}

	public void setStuBirthday(Date stuBirthday) {
		this.stuBirthday = stuBirthday;
	}

	public Integer getStuAge() {
		return stuAge;
	}

	public void setStuAge(Integer stuAge) {
		this.stuAge = stuAge;
	}

	@Override
	public String toString() {
		return "Student [stuId=" + stuId + ", stuName=" + stuName + ", stuSex=" + stuSex + ", stuBirthday="
				+ stuBirthday + ", stuAge=" + stuAge + "]";
	}
	
	
}

2.5 编写mybatis的配置文件

1.作用

​ 1.告知Java程序我们要使用mybatis框架

​ 2.通过属性文件或者连接信息创建mybatis的连接池对象

​ 3.加载我们的SQL语句并且简单执行获取到返回对象

2.5.1 在根目录下创建任意的xml文件

Mybatis快速入门_第9张图片

Mybatis快速入门_第10张图片





	
	
		
		
			
			
			
			
				
				
				
				
			
		
		
	

2.6 编写数据访问层的接口

package com.qf.mybatis.dao;
/**
 * 学生类的数据访问层接口
 *
 */

import java.util.List;

import com.qf.mybatis.pojo.Student;

public interface StudentDao {
	/**
	 * 添加学生信息
	 * @param student
	 * @return
	 */
	public int addStu(Student student);
	/**
	 * 查询所有学生数据
	 * @return
	 */
	public List findAllStu();
}

2.7 编写mybatis的映射文件

注意事项:

​ 1.映射文件的位置必须和你要实现的接口在同一个资源路径下

​ 2.一个接口对应这一个mybatis的映射文件,可以理解位mybatis的映射文件其实就是我们接口的实现类

​ 3.映射文件的名称必须和接口的名称保持一致。

Mybatis快速入门_第11张图片

步骤:

​ 1.黏贴头部文件

Mybatis快速入门_第12张图片

​ 2.编写映射文件



 
 
 
 	
 	
 	
 		
 		insert into student(stuName,stuSex,stuBirthday,stuAge)
 			values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})
 	
 	
 	
 

2.8 测试

Mybatis快速入门_第13张图片

package com.qf.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

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 com.qf.mybatis.dao.StudentDao;
import com.qf.mybatis.pojo.Student;

public class MyBatisDemo {
	
	@Test
	public void demo1() {
		try {
			//1.把mybatis的配置文件读取到了内存中
			InputStream input = Resources.getResourceAsStream("MybatisConfig.xml");
			//2.通过读取到内存的配置文件创建mybatis的核心对象 sqlSessionFactory
			//sqlSessionFactory:专门用来构建sqlSession的工厂,构建连接池
			//sqlSession:链接对象
			//2.获取sqlSessionFactory工厂,主要作用就是用来创建sqlSession对象
			SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
			SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(input);
			//3.获取sqlSession对象
			SqlSession sqlSession = sqlSessionFactory.openSession();
			//4.通过sqlSession对象获取数据访问层接口的代理类
			StudentDao studao = sqlSession.getMapper(StudentDao.class);
			//5.通过代理类执行方法
			Student student = new Student();
			student.setStuAge(20);
			student.setStuBirthday(new Date());
			student.setStuName("session");
			student.setStuSex('男');
			int row = studao.addStu(student);
			//5.1 提交更新
			sqlSession.commit();
			System.out.println(row);
			//6.释放资源,把sqlsession放回到sqlSessionFactory
			sqlSession.close();
			input.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	@Test
	public void demo2() {
		try {
			//1.把mybatis的配置文件读取到了内存中
			InputStream  input = Resources.getResourceAsStream("MybatisConfig.xml");
			//2.通过读取到内存的配置文件创建mybatis的核心对象 sqlSessionFactory
			//sqlSessionFactory:专门用来构建sqlSession的工厂,构建连接池
			//sqlSession:链接对象
			//2.获取sqlSessionFactory工厂,主要作用就是用来创建sqlSession对象
			SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
			SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(input);
			//3.获取sqlSession对象
			SqlSession sqlSession = sqlSessionFactory.openSession();
			//4.通过sqlSession对象获取数据访问层接口的代理类
			StudentDao studao = sqlSession.getMapper(StudentDao.class);
			List list = studao.findAllStu();
			for (Student student : list) {
				System.out.println(student);
			}
			//6.释放资源,把sqlsession放回到sqlSessionFactory
			sqlSession.close();
			input.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

3.mybatis通过注解的形式实现数据访问

3.1 所有的配置基本操作都一直

3.2 在核心配置文件中不需要在引入mapper.xml的文件

Mybatis快速入门_第14张图片

3.3 在数据访问层接口添加注解

package com.qf.mybatis.dao;
/**
 * 学生类的数据访问层接口
 * 1.首先确定你数据访问层的方法执行哪一个类型的SQL语句
 * 		例如: 
 				SQL语句类型         使用标签
 				添加			   @insert
 				查询 			@select
 				修改				@update
 				删除				@delete
 */

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.junit.runners.Parameterized.Parameters;

import com.qf.mybatis.pojo.Student;

public interface StudentDao {
	/**
	 * 添加学生信息
	 * @param student
	 * @return
	 */
	/**
	 * value: sql语句的编写位置
	 */
	@Insert(
			value="insert into student(stuName,stuSex,stuBirthday,stuAge) values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})"
	)
	public int addStu(Student student);
	/**
	 * 查询所有学生
	 * @return
	 */
	@Select("select * from student")
	public List findAllStu();
}

注意删除核心配置文件的xml添加接口,删除改接口下的xml。

package com.qf.mybatis.dao;
/**
 * 学生类的数据访问层接口
 * 1.首先确定你数据访问层的方法执行哪一个类型的SQL语句
 * 		例如: 
 				SQL语句类型         使用标签
 				添加			   @insert
 				查询 			@select
 				修改				@update
 				删除				@delete
 */

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.junit.runners.Parameterized.Parameters;

import com.qf.mybatis.pojo.Student;

public interface StudentDao {
	/**
	 * 添加学生信息
	 * @param student
	 * @return
	 */
	/**
	 * value: sql语句的编写位置
	 */
	@Insert(
			value="insert into student(stuName,stuSex,stuBirthday,stuAge) values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})"
	)
	public int addStu(Student student);
	/**
	 * 查询所有学生
	 * @return
	 */
	@Select("select * from student")
	public List findAllStu();
}

d.Parameters;

import com.qf.mybatis.pojo.Student;

public interface StudentDao {
	/**
	 * 添加学生信息
	 * @param student
	 * @return
	 */
	/**
	 * value: sql语句的编写位置
	 */
	@Insert(
			value="insert into student(stuName,stuSex,stuBirthday,stuAge) values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})"
	)
	public int addStu(Student student);
	/**
	 * 查询所有学生
	 * @return
	 */
	@Select("select * from student")
	public List findAllStu();
}

你可能感兴趣的:(java,eclipse,maven)