mybatis系列(一)--初识mybatis,以及mybatis的基本配置和执行

一.初识mybatis

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目迁移到了google code,并且改名为MyBatis ,2013年11月迁移到Github。


二.mybatis的基本配置和执行

1.准备mybatis的jar包:mybatis-3.2.8.jar

   准备数据库jar包(我用的是mysql):mysql-connector-java-3.1.12-bin.jar


2.准备mybatis的主配置文件:mybatis-config.xml

项目架构看图,其中jdbc.propertis为数据库连接配置文件


下面附上jdbc.propertis和mybatis-config.xml的代码


jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=12345

<?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>
    
    <!-- 方法一: 从外部指定properties配置文件, 除了使用resource属性指定外,还可通过url属性指定url-->
	<properties resource="jdbc.properties"/>
	
	
	<!-- 
		 通过package, 可以直接指定package的名字, mybatis会自动扫描你指定包下面的javabean,
	      并且默认设置一个别名,默认的名字为: javabean 的首字母小写的非限定类名来作为它的别名。
	      也可在javabean 加上注解@Alias 来自定义别名, 例如: @Alias(user) 
	  <package name="com.dy.entity"/>
	 -->
	<typeAliases>
		<typeAlias alias="Student" type="com.douhao.model.Student"/>
	</typeAliases>
	
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
			
			<!-- 方法二: 直接配置为xml 
				<dataSource type="POOLED">
						<property name="driver" value="com.mysql.jdbc.Driver" />
						<property name="url" value="jdbc:mysql://localhost:3306/test" />
						<property name="username" value="root" />
						<property name="password" value="1234" />
					</dataSource>
			-->
		</environment>
		
		<!-- 一个environments元素下面可以配多个environment元素,可以对应不同的环境,如开发环境和
		生产环境。给environment元素配置不同的id就可以实现,至于要用到哪个环境,可通过environments元素
		的default属性实现,如<environments default="development">。这时就就会运行id是development的
		环境了。
		 -->
		<environment id="final">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="1234" />
			</dataSource>
		</environment>
		
	</environments>
	<mappers>
		<mapper resource="com/douhao/mappers/StudentMapper.xml" />
	</mappers>
	
	
	<!--
	<mappers>
     	  第一种方式:通过resource指定 
    <mapper resource="com/dy/dao/userDao.xml"/>
    
      	第二种方式, 通过class指定接口,进而将接口与对应的xml文件形成映射关系
             不过,使用这种方式必须保证 接口与mapper文件同名(不区分大小写), 
             我这儿接口是UserDao,那么意味着mapper文件为UserDao.xml 
     <mapper class="com.dy.dao.UserDao"/>
      
      
      	第三种方式,直接指定包,自动扫描,与方法二同理 
      <package name="com.dy.dao"/>
      
     	 第四种方式:通过url指定mapper文件位置
      <mapper url="file://........"/>
       
  </mappers>
  -->
</configuration>


现在我们有了mybatis的主配置文件,但要想运行mybatis我们还要知道两个很关键的知识点 

1.SqlSessionFactory 2.SqlSession

SqlSessionFactory 根据他的名字就知道,这是一个mybatis的session工厂,用来创建mybatis的核心:SqlSession

所以我们1.要通过刚刚的主配置文件得到SqlSessionFactory。2.通过SqlSessionFactory打开数据库会话,获得SqlSession

再说下SqlSession的作用:
1.向sql语句传入参数
2.执行sql语句
3.获取执行sql语句的结果
4.事务的控制 

思路明了:1.通过主配置文件拿到SqlSessionFactory 2.通过SqlSessionFactory 拿到SqlSession 来操作我们的数据库。下面看代码



package com.douhao.service;

import java.io.IOException;
import java.io.Reader;
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 com.douhao.model.Student;


public class StudentService {
	/**
	 * 
	 * @author 
	 * @description 获得SqlSessionFactory
	 * @return
	 * @throws IOException
	 * @update 2016年9月24日 下午4:21:54
	 */
	public SqlSessionFactory getSessionFactory() throws IOException{
		//通过配置文件获取数据库连接的相关信息
		Reader reader= Resources.getResourceAsReader("mybatis-config.xml");
		//通过配置信息构建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
		return sqlSessionFactory;
	}
	
	public static void main(String[] args) {
		StudentService studentService=new StudentService();
		SqlSession sqlSession=null;
		try {
			SqlSessionFactory sqlSessionFactory=studentService.getSessionFactory();
			sqlSession=sqlSessionFactory.openSession();
			List<Student> list=sqlSession.selectList("student.findStudentById");//这里配置的是StudentMapper.xml中 (namespace.元素id)
			System.out.println(list.size());
			for(Student s:list){
				System.out.println(s.getId());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if(sqlSession!=null){
				sqlSession.close();
			}
		}
	}

}


package com.douhao.model;

public class Student {
	
	Integer id;
	String name;
	String age;
	
	public Student() {
		super();
	}
	
	public Student(String name, String age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	
	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 String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	

}

<?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="student">

	<select id="findStudentById"  resultType="com.douhao.model.Student">
		select * from t_student
	</select>
	
</mapper> 


执行main方法后查出纪录。至此mybatis能运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值