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

MyBatis框架介绍(1)

时间:2015-06-19 06:44:44      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:java web

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


MyBatis框架介绍(1)

标签:java web

原文地址:http://4440271.blog.51cto.com/4430271/1663367

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