1 MyBatis简介
1.1 MyBatis
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
对jdbc的封装框架有哪些:Hibernate,dbutils,jdbcTemplate[spring],mybatis
原理:Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
1.2 jdbc程序代码
|
|
存在的问题
- 数据库连接频繁开启和关闭,会严重影响数据库的性能。
- 代码中存在硬编码,分别是数据库部分的硬编码和SQL执行部分的硬编码。
1.3 MyBatis的框架核心
|
- Mybatis入门
2.1 环境准备
创建数据库表
|
|
下载MyBatis
mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases
创建项目导包
导入下面的包
|
|
|
|
添加log4j.properties
Mybatis使用的日志包是log4j的,所以需要添加log4j.properties。
在classpath下创建log4j.properties如下:【文件内容可以从mybatis-3.2.7.pdf中拷贝】
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
日志级别在开发阶段设置成DEBUG,在生产阶段设置成INFO或者ERROR。
2.2 开发步骤
思路:
|
创建PO类
|
|
创建SqlMapConfig.xml
在classpath(src)下,创建SqlMapConfig.xml文件【SqlMapConfig.xml(文件头可以从mybatis-3.2.7.pdf文档的2.1.2小节中拷贝)】
|
<?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> <!-- 配置mybatis的环境信息 --> <environments default="development"> <environment id="development"> <!-- 配置JDBC事务控制,由mybatis进行管理 --> <transactionManager type="JDBC"></transactionManager> <!-- 配置数据源,采用dbcp连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> </configuration> |
映射文件
在classpath下,创建sqlmap文件夹。在sqlmap目录下,创建User.xml映射文件。
【Mybatis的映射文件头(可以从mybatis-3.2.7.pdf文件中拷贝)】
|
<?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"> <!-- namespace:命名空间,它的作用就是对SQL进行分类化管理,可以理解为SQL隔离 注意:使用mapper代理开发时,namespace有特殊且重要的作用 --> <mapper namespace="test"> <!-- [id]:statement的id,要求在命名空间内唯一 [parameterType]:入参的java类型 [resultType]:查询出的单条结果集对应的java类型 [#{}]: 表示一个占位符? [#{id}]:表示该占位符待接收参数的名称为id。注意:如果参数为简单类型时,#{}里面的参数名称可以是任意定义 --> <select id="findUserById" parameterType="int" resultType="com.gyf.domain.User"> SELECT * FROM USER WHERE id = #{id} </select> </mapper> |
配置文件加载映射文件
|
|
测试类
|
|