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