本人刚入行,如果以下文章有出错,望大家指出来,谢谢。
先看下本篇文章主要讲的内容:
一、MyBatis的简单介绍
二、MyBatis开发所需Jar包
三、MyBatis的简单使用
一、MyBatis 简单介绍
1、MyBatis的发展史:
MyBatis的前身本是apache的一个开源项目iBatis,iBatis是"internet"和"abatis"的组合,是一个基于Java的持久层框架(另外一种持久层框架后续会写相关的文章来说明),这个iBatis这个项目在2010年被谷歌收购,并且改名为MyBatis,在2013年又从谷歌迁移到Github上。
2、MyBatis的特点:
开源的优秀的持久层框架
SQL语句与代码分离
面向配置的编程,提高代码的可维护性和可扩展性
良好支持 复杂数据映射
动态SQL
3、MyBatis的三层功能架构(注:来至百科介绍)
API接口层:提供给外部使用的接口API,开发人员可以开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
二、MyBatis开发所需的Jar包
前面提到Mybatis最后迁移到了Github上面,咱们所需要的Jar包当然是到GitHub上面下载,下载地址:https://github.com/mybatis/mybatis-3/releases,下载下来之后是以压缩包,解压压缩包把所需的mybatis-3.2.8.jar(我下载时的版本)包拷贝到项目中,还需要把解压完之后的lib文件夹里的所有jar包也一起拷贝到项目中,这些辅助包。这里咱们操作MySQL数据库所以还需要引入mysql-connection-java-x(x表示自己下载使用的版本jar包)-ga-bin,jar。最后在配置一下日志配置。
三、MyBatis的简单使用
1、配置文件介绍:
(1)基本配置文件,这里附上网友的文章,里面已经介绍的很详细http://blog.csdn.net/etttttss/article/details/8902125
(2)Map配置文件,其实Map配置文件就是我们用来书写SQL语句的
2、代码示例:
在jike.book.pojo包中新建一个表的映射类jkuser,映射类的属性名和表的的列名一一对应
<span style="font-size:14px;">package jike.book.pojo;
public class jkuser {
private int id;
private String username;
private String password;
}</span>
再建一个基本配置文件
<span style="font-size:14px;"><?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">
<!-- 连接数据库的信息 -->
<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/mysql"/>
<property name="username" value="root"/>
<property name="password" value="xxxxxx"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="jk/book/map/jkuser.xml"/>
</mappers>
</configuration></span>
这个配置文件里有environment和mappers标记,environment里主要是一些连接数据库的信息,比如驱动driver,url、username、password等这些信息。mappers标记主要是用来告知Map配置文件的位置。
其次Map配置文件的代码:
<span style="font-size:14px;"><?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.jkuser">
select * from jkuser where id=#{id}
</select>
</mapper></span>
<span style="font-size:14px;"> <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">这边我主要是简单的查询数据库数据,其中的参数id作用后面会讲,parmeterTye参数主要是指定这条sql语句中需要的数据类型,参数resultType表示的查询完返回的结果的类型。</span></span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 最后贴上测试代码</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span><pre name="code" class="java"><span style="font-size:14px;">public class JkHello {
public static void main(String[] args) {
String resource="jk/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 sqlMap= new SqlSessionFactoryBuilder().build(reader);
session=sqlMap.openSession();
jkuser temp =session.selectOne("findById", 1);
System.out.println(temp.getUsername());
session.close();
}
}</span>
首先先通过流的方式读取基本配置文件,然后生成SqlSessionFactory,通过SqlSessionFactory建立SqlSession,然后通过Sqlsession对象来查询数据库数据,这里我们调用selectOne(参数1,参数2),参数1就是我们刚才在Map配置文件里设置的id主要用来告知程序查询语句位于哪,参数2主要是指查询数据库根据id查询所需要的值。