MyBatis笔记(一)

一,什么是MyBatis?

MyBatis是Apache公司的一个开源项目iBatis,是基于Java的持久层框架,iBatis提供的持久层框架包括SQLMaps和

Data Access Object(DAO)。Mybatis主要用于解决数据库存储问题,是数据持久层框架,把实体类和SQL语句之间建立映射关系,是一种“半自动化”的ORM实现。

MyBatis使用简单的XML或注解用于配置和源文件映射,将接口和Java的普通对象(Plain Old Java Object)映射成数据库中的记录。

“半自动化”是相对于Hibernate等提供了全面数据库封装机制的全自动化ORM实现来说,“全自动”ORM实现了POJO和数据库表之间的映射和SQL的自动生成和执行。

二,MyBatis的优点

1,基于SQL语法,简单易学

2,SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度

3,程序调试方便

4,Java与SQL分离,SQL语句都定义在xml文件中,也可以通过注解的方式在接口上实现(这些映射文件为mapper)

三,MyBatis实例

1.建立Java项目,导入MyBatis所需要的jar包,

在数据库中建立数据表,在java类中实现与数据库字段相对应

package com.neusoft.vo;

public class MyBatisStudent { 
       private int id;
       private String name; 
       private String phone;
       private String address; 
       
       @Override public String toString() { 
    	   return "MyBatisStudent [id=" + id + ", name=" + name + ", " +
    	   		"phone="    + phone + ", address=" + address + "]"; 
    	   }
       
       public int getId() {
    	   return id; 
    	   }
       
       public void setId(int id) {
    	   this.id = id; 
    	   }
       public String getName() {
    	   return name; 
    	   }
       public void setName(String name) {
    	   this.name = name; 
    	   }
       public String getPhone() { 
    	   return phone; 
    	   }
       public void setPhone(String phone) {
    	   this.phone = phone; 
    	   }
       public String getAddress() {
    	   return address; 
    	   }
       public void setAddress(String address) {
    	   this.address = address; 
    	   }
       public MyBatisStudent(int id, String name, String phone, String address) {
    	   super(); 
    	   this.id = id;
    	   this.name = name;
    	   this.phone = phone;
    	   this.address = address;
    	   }
       public MyBatisStudent() {
    	   super(); 
    	   }
}

2,创建全局配置文件,配置数据资源,事物等MyBatis运行环境

<?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="db.properties"></properties>
	<typeAliases>
		<package name="com.neusoft.vo"/>
	</typeAliases>

        <!-- 配置MyBatis运行环境 -->
	<environments default="development"> 
		<environment id="development">

                         <!-- type="JDBC"代表使用JDBC的提交和回滚来管理事务 -->
			<transactionManager type="JDBC"/> 

                        <!-- MyBatis提供的数据类型:POOLED -->
                        <!-- POOLED表示支持JDBC数据源连接池 -->
			<dataSource type="POOLED"> 
				<property name="driver" value="${jdbc.driver}"/> 
				<property name="url" value="${jdbc.url}"/> 
				<property name="username" value="${jdbc.username}"/> 
				<property name="password" value="${jdbc.password}"/> 
			</dataSource> 
		</environment> 
	</environments> 
	
        <!-- 加载映射文件 -->
	<mappers> 
                <!-- 通过resource方法一次加载一个映射文件(映射文件路径) -->
		<mapper resource="com/neusoft/mapper/mybatisuser_mapper1.xml"/>
	</mappers> 
</configuration>  
基础配置文件的数据源:

MyBatis提供了三种数据源类型:UNPOOLED,POOLED,JNDI

(1)UNPOOLED:     实现在每次请求的时候简单的打开或者关闭一个连接,比较慢,作为一些不需要性能和立即响应的简单应用可以选择使用

(2)POOLED  :        缓存了JDBC连接对象,避免每次都要连接和生成连接实例所需要的验证时间,对于并发WEB应用很流行,因为他有最快的响应时间

(3)JNDI      :       它是为了准备和Spring或应用服务一起使用,可以在外部也可以在内部配置这个资源,然后在JNDI上下文中引用它

基础配置文件——事务管理:

MyBatis有两种事物管理类型:

JDBC:直接全部使用JDBC的提交和回滚功能。它依靠使用连接的数据源来管理事务的作用域

MANAGED:将事务管理交给Spring或者JAVAEE服务器

3,创建映射文件,配置增,删,改,查的SQL语句

接口方法
package com.neusoft.mapper;

import com.neusoft.vo.MyBatisStudent;

public interface StudentDao {
        //插入对象
	public void insertStudent(MyBatisStudent student);
	//根据id删除
	public void deleteStudent(int id);
	//根据id更新
	public void updateStudent(int id);
	//根据id查询
	public void selectStudent(int id);

}

配置映射文件

parameterType:指定输入参数的类型(例如通过id查询,则为int)

resultTYpe : 知道sql输出结果映射的java对象类型

id :接口中的方法名

#{ }表示一个占位符

#{A}:A表示接受输入的参数,根据id查询,则参数就是id  


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN">

<!-- namespace命名空间,作用就是对sql进行分类化管理-->

<mapper namespace="test">

<!-- 插入 -->
<insert parameterType="com.neusoft.vo.MyBatisStudent" id="insertStudent"> insert into mybatisstudent values (#{id},#{name},#{phone},#{address}) </insert>

<!-- 删除 -->
<delete parameterType="int" id="deleteStudent"> delete from mybatisstudent where id=#{id} </delete>

<!-- 更新 -->
<update parameterType="com.neusoft.vo.MyBatisStudent" id="updateStudent"> update mybatisstudent set name=#{name},phone=#{phone},address=#{address} where id=#{id} </update>

<!--查询 -->
<select parameterType="int" id="selectStudent" resultType="com.neusoft.vo.MyBatisStudent"> select * from mybatisstudent where id=#{id} </select>

</mapper

4,测试,创建SqlSessionFactory工厂,创建SqlSession,执行数据库操作



package com.neusoft.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 com.neusoft.vo.MyBatisStudent;

public class TestMybatis {
	
	@Test
	public void insertStudent() throws IOException{
		InputStream inputStream = Resources.getResourceAsStream("Mybatis.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = factory.openSession();
		MyBatisStudent student = new MyBatisStudent();
		student.setId(3);
		student.setName("jack");
		student.setPhone("222");
		student.setAddress("222");
		session.insert("test.insertStudent",student);
		session.commit();
	}
	
	@Test
	public void deleteStudent() throws IOException{
		InputStream inputStream  = Resources.getResourceAsStream("Mybatis.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = factory.openSession();
		session.delete("test.deleteStudent",2);
		session.commit();
	}
	
	@Test
	public void updateStudent() throws IOException{
		InputStream inputStream = Resources.getResourceAsStream("Mybatis.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = factory.openSession();
		MyBatisStudent student = new MyBatisStudent();
		student.setId(2);
		student.setName("rose");
		student.setPhone("888");
		student.setAddress("888");
		session.update("test.updateStudent",student);
		session.commit();
	}
	
	@Test    //需要导入JUnit4
	public void selectStudent() throws IOException{
		InputStream inputStream = Resources.getResourceAsStream("Mybatis.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = factory.openSession();
		MyBatisStudent student = session.selectOne("test.selectStudent", 1);
		System.out.println(student);
	}
}


JUnit4导入方法:


在项目上点击右键——属性——在弹出的窗口左边选择“Java Build Path”,然后在右边选择“Libraries”,再在最右边选择“Add Library...”——在弹出的对话框中选择JUnit4并确定

运行时选择JUnit Test










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值