在具体做这个实战教程前,首先要对mybatis有个基础的认识。
什么是mybatis ?
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis跟hibernate相同,都是通过ORM(对象关系映射)使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。比hibernate灵活。性能也比hibernate好。
开发环境的搭建
我搭建的环境,选择:myeclipse8.5,mysql5.0,jdk1.7,mybatis-3.1.1.jar,tomcat6.0,navicat for Mysql。这些软件工具均可以到各自的官方网站上下载。
第一步,创建一个名字为MybatisTest的Web Porject项目。
第二步,添加mybatis-3.1.1.jar和mysql-connector-java-5.1.7.jar到MyBatiTest\WebRoot\WEB-INF\lib目录下面。
第三步,在src下创建一个configuration.xml文件。
在configuration.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"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="gaoli123"/>
</dataSource>
</environment>
</environments>
</configuration>
第四步,测试连接数据库。
1)在src下创建一个util包,在其下面再创建一个MyBatisUtil.java的文件
2)编写测试能否加载配置文件,并实例化的对像的代码
package util;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* 数据库配置类
* @author gaoli
* @date 2015-01-08
*/
public class MyBatisUtil {
private static SqlSessionFactory ssf;
static {
try {
//加载配置文件configuration.xml
Reader reader = Resources.getResourceAsReader("configuration.xml");
//实例化SqlSessionFactory对象
ssf = new SqlSessionFactoryBuilder().build(reader);
System.out.println(ssf);
} catch (IOException e) {
System.out.println("找不到该文件,文件加载失败!");
}
}
public static void main(String[] args) {
SqlSession session= ssf.openSession();
System.out.println(session != null);
}
}
3)执行该类,执行结果为:
<pre name="code" class="html">org.apache.ibatis.session.defaults.DefaultSqlSessionFactory@10f35d1
true
这说明已经实例化sqlSessionFactory对象,并且能获取到sqlSession
4)使用Navicat添加user表,并向表中添加一条记录
5)在项目的src下添加entity包,并在其中创建User.java实体类(与表结构相同)
package entity;
/**
* 实体类User,与数据库对应
* @author gaoli
* @date 2015-01-08
*/
public class User {
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;
}
@Override
public String toString() {
return "User [id=" + id + ", password=" + password + ", username="
+ username + "]";
}
}
6)在同目录下,添加UserMapper.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="dao.UserMapper">
<select id="getById" parameterType="int" resultType="User">
select * from user where id = #{id}
</select>
</mapper>
7)修改configuration.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>
<typeAliases>
<typeAlias type="entity.User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="gaoli123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="dao/UserMapper.xml" />
</mappers>
</configuration>
8)修改MyBatisUtil.java文件代码,在main方法中添加代码:
package util;
import java.io.IOException;
import java.io.Reader;
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 entity.User;
/**
* 数据库配置类
* @author gaoli
* @date 2015-01-08
*/
public class MyBatisUtil {
private static SqlSessionFactory ssf;
static {
try {
//加载配置文件configuration.xml
Reader reader = Resources.getResourceAsReader("configuration.xml");
//实例化SqlSessionFactory对象
ssf = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
System.out.println("找不到该文件,文件加载失败!");
}
}
public static void main(String[] args) {
SqlSession session= ssf.openSession();
try{
User user =(User)session.selectOne("dao.UserMapper.getById",1);
System.out.println("user:"+user.getUsername());
System.out.println("pass:"+user.getPassword());
}finally{
//session开启后,执行完数据库操作,必须关闭。
session.close();
}
}
}
9)测试数据库的连接,看看是否有正确的返回值:
user:Lina
pass:123123
现在运行这个程序,是不是得到查询结果了。恭喜你,环境搭建配置成功,接下来第二章,将讲述基于接口的操作方式,增删改查。
整个工程目录结构如下: