码迷,mamicode.com
首页 > 其他好文 > 详细

1. MyBatis入门

时间:2015-12-15 06:32:46      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:mybatis

    MyBatis 以前叫 iBatis, 相对于 HIbernate 是一个轻量级的 ORM 框架, 一般的小型的项目使用 HIbernate 实在是大材小用. 这两天学了学 MyBatis, 就好好的总结一下吧.

    先来一个快速入门吧!

    我的开发环境: 

        jdk1.8, windows7, EclipseJ2EE, MySQL, SQLyog


一: MyBatis 开发环境搭建.

    1. 建项目 

    新建一个 JavaProject, 新建一个 lib 目录, 用来存放所需的 jar 包的.

    2. 下载需要的jar包

    MyBatis 的 jar 包点击 MyBatis In Maven 上下载

    MySQL 数据库连接驱动点击 MySQL-connector 下载.

    3. 添加 jar 包 

    把两个 jar 包粘贴到新建的 lib 目录下面, 然后选中两个 jar 包, 右击, Build Path -> Add To Path, 把 jar 包添加到当前的项目中.

    如下:

    技术分享


二: 对数据表的简单 CRUD

    1. 建库

CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO person(NAME, age) VALUES(‘Tom‘, 23);
INSERT INTO person(NAME, age) VALUES(‘Mike‘, 14);
INSERT INTO person(NAME, age) VALUES(‘Jack‘, 18);

    2. 添加 MyBatis 的配置文件 conf.xml

    在 src 目录下建立一个 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.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="oracle" />
			</dataSource>
		</environment>
	</environments>
</configuration>

   其中: 

    ①. environments及environment 的 default 属性指定模式

         development: 开发模式(一般选用这个)

         work: 工作模式

    ②. transactionManager 的 type 属性用于指定事务管理器类型
          JDBC:使用JDBC的提交和回滚设置,依赖从数据源获取的连接来管理事务范围.

          MANAGED:让容器(如Spring)来管理事务的生命周期。默认情况会关闭连接.

    ③. dataSource 的 type 属性指定连接池类型

        UNPOOLED:连接用完就关闭,不放到连接池
        POOLED:连接用完则放在连接池

    里边的连接属性就不用说了.


    3. 建立与数据表对应实体类 Person

        在 src 下面建立一个 com.mybatis.entities 包用来存放 Person 实体类. 然后在包下建立实体类 Person.

技术分享

    具体的 setter 和 getter 以及 toString 方法自己写好, 如果添加了一个 有参的构造方法, 一定要加上一个无参的构造方法, 因为 MyBatis 会利用反射为属性赋值.


    4. 添加操作 person 数据表的 SQL 映射文件 PersonMapper.xml

    在 com.mybatis.entities 包下新建一个 PersonMapper.xml(类名+Mapper.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="com.mybatis.entities.PersonMapper"> 
	
	<!-- 通过 id 查找一个 Perosn 对象 -->
	<select id="getPerson" parameterType="int" 
		resultType="com.mybatis.entities.Person">
		SELECT * FROM person WHERE id=#{id}
	</select>
	
</mapper>

     ①. mapper 标签的 namespace 属性的值这样填写: 

        PersonMapper.xml 文件所在的包 + PersonMapper.xml 去掉 .xml

        就是: com.mybatis.entities.PersonMapper

     ②. <select> 标签表示是一个 select 查询, 如果按 Eclipse 的提示键没有提示的话, 说明没有关联 .dtd 文件, 关联方法点击这里 Eclipse中在XML中如何关联.dtd文件.

    ③. <select> 标签的属性

      a). id: 我们在调用内部 SQL 语句的时候会利用这个, 保证本文件中唯一不冲突.

      b). parameterType: 传进来的参数的类型, 因为我们通过 id 查找一个 Person 对象.所以传进来一个 int 类型的 id.

      c). resultType: 返回值类型, 这里写全类名, 带着包名.

    内部就是SQL语句, 至于 #{id} 这个就是用来接收传进来的 int 类型的数字.


    5. 在 conf.xml 文件中关联 PersonMapper.xml 映射文件

    利用 <mappers> 标签来关联映射文件. 如下:

<mappers>
	<mapper resource="com/mybatis/entities/PersonMapper.xml"/>
</mappers>

    <mappers>标签与<environments>标签处于同一个级别.

    

    6. 编写测试类. 获取一个 Person 对象

    新建一个 com.mybatis.test 包, 在包下建立一个 TestPerson 类. 利用 Junit 单元测试来测试.

代码如下:

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.mybatis.entities.Person;

public class TestPerson {
	
	@Test
	public void testGetPerson(){
		
		InputStream is = getClass().getClassLoader()
		        .getResourceAsStream("conf.xml");
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
		        .build(is);
		SqlSession session = sessionFactory.openSession();
		
		String statement = "com.mybatis.entities.PersonMapper.getPerson";
		Person person = session.selectOne(statement , 1);
		
		System.out.println(person); // Person [id=1, name=Tom, age=23]
		
	}
	
}

    与 Hibernate 一样, 我们需要一个 SessionFactory 和一个 Session,

    SessionFactory的创建需要一个流, 这个流对应着就是 conf.xml 文件的流.

    session 的创建也很简单, openSession 就可以了. 


    告知 MyBatis 要调用哪一个 SQL 语句:

    String statement = "com.mybatis.entities.PersonMapper.getPerson"; 

    最后边的 getPerson 就是刚才我们<select>标签配置的 id 值.


     因为我们需要传一个参数 id 给 SQL 语句, 所以我们需要在第二个参数上带一个 1.

    Person person = session.selectOne(statement , 1);

    表示查询 id 为 1 的 Person 对象.


    最后打印, 查询完成!


本文出自 “专注Java,linux技术” 博客,请务必保留此出处http://wuqinglong.blog.51cto.com/9087037/1723031

1. MyBatis入门

标签:mybatis

原文地址:http://wuqinglong.blog.51cto.com/9087037/1723031

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!