Mybatis的简单配置实例

一、相较于Hibernate,mybatis的优势在哪里?

Hibernate缺点:

1、运行效率低,内存占用比较严重

2、针对单一对象的增删改查,适合Hibernate,而Hibernate在批量操作时处于弱势

3、虽然Hibernate引入一二级缓存、lazyload、查询缓存等更多优化空间(对于那些改动 不大且经常使用的数据,可将他们放入缓存中),但Hibernate对于持久层封装过于完 整,导致开发人员无法对sql进行优化,不适用于大型项目

mybatis优点:

1、代码量大大减少,开发效率高

2、 MyBatis相当灵活,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统 一管理和优化,并可重用

3、运行效率高

下面再详细介绍一下mybatis的主要成员:

1、Configuration

MyBatis所有的配置信息都保存在Configuration对象之中,配置文件的大部分配置都会存储到该类中

2、SqlSession

作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能

3、Executor

MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护

StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等

4、ParameterHandler

负责对用户传递的参数转换成JDBC Statement 所对应的数据类型

5、ResultSetHandler

负责将JDBC返回的ResultSet结果集对象转换成List类型的集合

6、TypeHandler

负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换

7、MappedStatement

MappedStatement维护一条<select|update|delete|insert>节点的封装

8、SqlSource

负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回

9、BoundSql

表示动态生成的SQL语句以及相应的参数信息

二、下面直接做案列,Mybatis如何与数据库(这里我们用SQL Server2012,也可用MySQL等其他数据库)连接,操作简单的查询。

1、首先创建一个简单的数据库:(如下图)

2、新建一个Java Project项目,名为MybatisStudy(这里用的开发工具是MyEclipse2015,也可用Eclipse或者其他):

(1)、下载一个Mybatis的jar包引入项目中,这里我用的是3.4.6版本;下载地址:链接:https://pan.baidu.com/s/19YHzR78fKLWSqkHBfDE49A;提取码:kp2z

(2)、连接SQL Server2012还需在项目中引用JDBC驱动,这里我用的是4.1版本;下载地址:链接:https://pan.baidu.com/s/1ETzeXwbmEHVmtI5EwOyg8g;提取码:qyn9
这样必要的jar也就引用好了,项目建好如下图:

3、在org.lanqiao.entity包下创建Person实体类,代码如下:

package org.lanqiao.entity;

public class Person {
	private int studentid;
	private String name;
	private int age;
	
	public Person() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Person(int studentid, String name, int age) {
		super();
		this.studentid = studentid;
		this.name = name;
		this.age = age;
	}

	public int getStudentid() {
		return studentid;
	}

	public void setStudentid(int studentid) {
		this.studentid = studentid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public String toString(){
		return this.studentid + "," + this.name + "," + this.age;
	}
	
}

4、创建实体Person实体的xml映射文件,代码如下:

<?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="org.lanqiao.entity.personMapper"><!-- 放映射文件路径 -->
	<select id="queryPersonById" resultType="org.lanqiao.entity.Person" parameterType="int"> 
		select * from T_Person where studentid = #{studentid}
	</select>
</mapper>

 注:org.lanqiao.entity.personMapper,映射文件的存放路径;org.lanqiao.entity.Person,映射的实体类路径;parameterType="int"传入参数的类型为int类型,studentid是下面sql语句的参数,int类型;

5、创建连接数据库的xml配置文件(这里名为conf.xml),代码如下:

<?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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<!-- 配置数据库信息 -->
				<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
				<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=db_MybatisStudy"/>
				<property name="username" value="sa"/>
				<property name="password" value="123456"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- 加载映射文件 -->
		<mapper resource="org/lanqiao/entity/personMapper.xml"/>
	</mappers>
</configuration>

6、创建一个测试类,代码如下:

package org.lanqiao.entity;
import java.io.IOException;
import java.io.Reader;

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

public class TestMybatis {

	public static void main(String[] args) throws IOException{
		// 加载Mybatis配置文件(为访问数据库)
		Reader reader = Resources.getResourceAsReader("conf.xml");
		// 创建SqlSessionFactory对象,相当于JDBC的connection对象
		SqlSessionFactory sessionFactory = new  SqlSessionFactoryBuilder().build(reader);
		//session相当于connection
		SqlSession session = sessionFactory.openSession();
		
		//相当于SQL语句
		String statement = "org.lanqiao.entity.personMapper.queryPersonById";
		Person person = session.selectOne(statement,1);
		System.out.println(person);
		session.close();
	}

}

通过以上详细操作即可通过Mybatis技术对数据库数据进行持久化操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值