Mybatis介绍:
1. 为什么要学习此框架,肯定是之前的做法有太多的缺点,此框架的产生就 是解决此类不足。(JDBC不足:自己回忆)。
2. Mybatis是一个ORM(Object Relation Mapping)框架,对象(JAVA)关系(数据库)映射,ORM将java和数据库关联起来,使用者只关心java这一端。
3. 原来叫Ibatis,在apache基金会里面,后来挪到google上面 google code,最后挪到gitHub上面;gitHub是和svn竞争对手.SVN有的功能,git全部有;git有的功能,svn不一定有.
4.官网:https://github.com/mybatis/mybatis-3
5.下载地址:https://github.com/mybatis/mybatis-3/releases
版本:mybatis-3.2.7
开发版本目录介绍:
Lib:放的是一些jar包,jar包里面放的是一些classes文件,JAR:包(java项目),WAR包(web项目)
- mybatis-3.2.7.jar:mybatis的核心包 mybatis-3.2.7.pdf:官方提供的帮助手册(书);英文的
中文手册:http://www.mybatis.org/mybatis-3/zh/index.html
先爽一把(举个简单的例子测试)
查询管理员表的所有记录:
1. 写一个POJO(Entity)
package com.bjsxt.mybatis.pojo;
import java.util.Date;
/**
* 管理员的POJO(实体类)
*
* 类名和表名一样(木有人遵守,会_去掉) 属性名和列名一样
*
* @author WangshSxt
*
*/
public class AAdmins
{
private int id;
private int roleId;
private String email;
private String password;
private byte status;
private Date createTime;
private Date updateTime;
Set/get方法(读写器)
}
2.写一个映射文件;*Mapper.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">
<!--
namespace:命名空间 package
mapper:类
-->
<mapper namespace="test">
<!--
查询管理员表的所有记录
id:所有的sql语句,唯一,不能重复
resultType:查询的sql语句返回的结果,类型,一般写的是POJO的类型
如果是多条:List中放的是resultType指定的类型
如果是单条,返回的结果类型就是resultType指定的类型
-->
<select id="findList" resultType="com.bjsxt.mybatis.pojo.AAdmins">
select * from a_admins
</select>
</mapper>
3.将Mapper.xml的文件添加到mybatis.cfg.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>
<!--
数据源(连接数据库的相关信息)
环境的复数
default:如果有多个environment标签,默认加载哪一个
-->
<environments default="myDefault">
<!-- 为每一个环境起上名字 -->
<environment id="myDefault">
<!-- 事务管理器 -->
<transactionManager type="JDBC"/>
<!-- 驱动,url,用户名,密码
连接池:
这个池子里面放的是一个一个链接Connection
-->
<dataSource type="POOLED">
<!-- 驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- url -->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<!-- 用户名 -->
<property name="username" value="root"/>
<!-- 密码 -->
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<!-- resource:映射文件的路径 -->
<mapper resource="com/bjsxt/mybatis/pojo/AAdminsMapper.xml"/>
</mappers>
</configuration>
4.测试代码:
package com.bjsxt.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.bjsxt.mybatis.pojo.AAdmins;
/**
* 测试Mybatis
* @author WangshSxt
*
*/
public class MyBatisMain
{
public static void main(String[] args)
{
try
{
/* 从classpath中加载配置文件
* 参数:配置文件的名字
* */
InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
/*
* sessionFactory====DriverManager
* */
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
/*
* session == Connection
* */
SqlSession session = sessionFactory.openSession();
/* 所有的操作都是session提供的方法
* 参数:填写的是:sql语句所在的映射文件的namespace+sql语句的id名
* */
List<AAdmins> adminsList = session.selectList("test.findList");
int count = 1 ;
for (Iterator iterator = adminsList.iterator(); iterator.hasNext();)
{
AAdmins admins = (AAdmins) iterator.next();
System.out.println(count + ",id:"+ admins.getId() +";email:"+ admins.getEmail() +
";createTime:" + admins.getCreateTime().toLocaleString());
count ++ ;
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
Mybatis运行图
项目结构图:
Loge4j:以下是标准的Log4j代码,许多项目通用
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>