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
原文:http://4440271.blog.51cto.com/4430271/1663367