MyBatis框架介绍(1)

MyBatis介绍:

MyBatis是一个基于Java的持久层框架,它把SQL语句与代码分离,是面向配置的编程的体现。MyBatis能良好支持复制对象的映射. 应用动态sql技术避免拼装sql语句。

MyBatis下载:

http://mybatis.github.io/2014/10/11/mybatis-3.2.8-released.html

在工程中到如包的顺序:

在工程中导入结果:

导入后配置日志:

MyBatis的sql语句输出是通过日志完成的,因此需要配置日志:日志输出级别均为debug

日志文件从网上下载然后修改即可:

log4j.rootLogger=DEBUG, Console  
  
#Console  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
  
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG

MyBatis工作流程:

  • 读取基本配置文件: 源数据库的相关信息
  • 生成SqlSessionFactory : 是SqlSession的工程,用于建立和数据库之间的会话
  • 建立SqlSession :执行sql语句
  • 调用Mybatis提供API
  • 查询MAP配置
  • 返回结果:
  • 关闭SqlSession

基本配置文件:

包含两部分内容:

  • 连接数据库相关信息
  • Map配置文件的路径位置
<?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">
      </transactionManager>
      <dataSource type="POOLED">   //是否使用连接池
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/jikebook"/>
        <property name="username" value="root"/>
        <property name="password" value="***"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
	    <mapper resource="jike/book/map/jikeUser.xml"/>
  </mappers>

</configuration>

这种文件可以从网上下载修改

Map配置文件有一下几种:

Map文件:

这里 id是唯一的。 resultType为返回值类型。parameterType是参数类型

数据库连接代码:

		String resource = "jike/book/map/MyBatisConfig.xml"; // 基本配置的路径
		Reader reader = null; //流对象
		SqlSession session; //执行sql
		try {
			reader = Resources.getResourceAsReader(resource); 
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
				.build(reader);
		session = sqlMapper.openSession();
		........
		session.close();

这段代码是通用的

用一个工程来说明MyBatis的相关内容。

整个工程建立的文件如下:

新建数据库:jikebook

在数据库中添加表jikeuser:

CREATE DATABASE /*!32312 IF NOT EXISTS*/`jikebook` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;

USE `jikebook`;

/*Table structure for table `jikeuser` */

DROP TABLE IF EXISTS `jikeuser`;

CREATE TABLE `jikeuser` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userName` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  `password` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/*Data for the table `jikeuser` */

insert  into `jikeuser`(`id`,`userName`,`password`) values (1,‘Hello everyone‘,NULL);

在pojo包中新建JiKeUser, 添加代码:其中变量与数据库中的变量名一致

package jike.book.pojo;

public class JiKeUser {
	private int id;
	private String userName;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

配置MyBatisConfig.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">
      </transactionManager>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/jikebook"/>
        <property name="username" value="root"/>
        <property name="password" value="123"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
	    <mapper resource="jike/book/map/jikeUser.xml"/>
  </mappers>

</configuration>

添加Map文件:

jike/book/map/jikeUser.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="/">

  <select id="findById"  parameterType="int"  resultType="jike.book.pojo.JiKeUser">
  	  select * from jikeUser where id=#{id}
  </select>

</mapper>

新建测试类:

package jike.book.test;

import java.io.IOException;
import java.io.Reader;

import jike.book.pojo.JiKeUser;

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 TestHello {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 连接数据库
		String resource = "jike/book/map/MyBatisConfig.xml";
		Reader reader = null;
		SqlSession session;
		try {
			reader = Resources.getResourceAsReader(resource);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
				.build(reader);
		session = sqlMapper.openSession();
		//
		JiKeUser temp = session.selectOne("findById", 1); // 第一个参数是sql语句的id,与之前xml中配置的id一致。 第二个是数据库中记录的id
		System.out.println(temp.getUserName());
		session.close();
	}

}

极客学院:http://www.jikexueyuan.com/course/827.html

时间: 2024-10-13 16:14:45

MyBatis框架介绍(1)的相关文章

3.3.1 MyBatis框架介绍

MyBatis框架介绍 1. 什么是框架 (1) 框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程. (2) 框架其实是一个半成品, 以连接数据库为例, 连接数据库使用的驱动, url, 用户名 , 密码必须告知框架. (3) 程序员在使用框架的时候, 通常以配置文件的方式告知框架需要的信息, 多数会使用 xml 作为框架的配置文件. (4) 因此, 在使用框架开发代码时, 需要编写配置文件, 代码的编写反而会减少. (5) 框架都是第三方提供的, 提供的都是 jar 包. 因此, 使

struts2+spring+mybatis框架整合详细介绍

一.问题的提出 最近一直在看各种主流javaweb框架,感触颇深,一个好的框架可以让你的程序代码变得相当的明了,也便于后期的维护!目前用到的主流框架包括struts2+spring+mybatis和spring+springmvc+mybatis(注:个人觉得mybatis框架很好用,所以框架基本都会选择用mybatis).其实很多的小伙伴都想自己配置个框架,但是基于怕报错啊.引入jar包.程序调试啊等等问题都放弃了!基于这个现象,本人在这里就详细的介绍下本人配置框架的详细过程,希望对读者有所帮

MyBatis框架(一)

MyBatis介绍: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参数.结果集检索等jdbc繁杂的过程代

MyBatis Generator介绍

MyBatis Generator介绍 MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码. 他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象. 这样和数据库表进行交互时不需要创建对象和配置文件. MBG的解决了对数据库操作有最大影响的一些简单的CRUD(插入,查询,更新,删除)操作. 您仍然需要对联合查询和存储过程手写SQL

MyBatis框架知识整理

MyBatis框架 一.介绍: MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]! 和数据库打交道的技术有: 原生的JDBC技术---> Spring的JdbcTemplate技术 这些工具都是提供简单的SQL语句的执行,但是和我们这里学的MyBatis框架还有些不同,框架是一整套的东西,例如事务控制,查询缓存,字段映射等等. 我们用原生JDBC操作数据库的时候都会经过: 编写sql---->预编译---->设置参数----->执行sql

MyBatis框架概述

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参数.结果集检索等jdbc繁杂的过程代码. 实现基本的数据库操作功能的流程如下: 编写xml文件,配置运行环境. 通过IO流载入xml文件,创建SqlSessionFactory对象(会话工厂). 由会话工厂,创建SqlSession对象(会话). 通过SqlSession对象,操作数据库.注意增

Spring集成MyBatis框架

Java在写数据库查询时,我接触过四种方式: 1.纯Java代码,引用对应的数据库驱动包,自己写连接与释放逻辑(可以用连接池) 这种模式实际上性能是非常不错的,但是使用起来并不是非常方便:一是要手工为Connection做获取与释放,大量的冗余代码也容易出错:另一个是,复杂的SQL用字符串写起来简直不可维护(换行.可视长度.参数都是问题). 2.使用Spring JdbcTemplate 这个其实还是挺不错的,配置比较简单,功能丰富上比手工管理Connection要舒服多了,而且代码也比较简洁.

MyBatis缓存介绍

一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 相同提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存.其存储作用域为 Session.当 Session flush 或 close 之后,该Session中的全部 Cache 就将清空. 2. 二级缓存与一级缓存其机制同样,默认也是採用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),而且可自己定义存储源,如

MyBatis框架学习(一)

MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并改名为MyBatis.2013年11月迁移到Github.iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO). 当我们在DAO层使用jdb