开发Mybatis的环境搭建
在我们使用mybatis之前我们要知道,mybatis是什么?
简单地说,mybatis就是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
在我们使用mybatis之前,我们需要做些什么呢?
大体上,我总结了五步:
一、导入jar架包。
在导入jar架包的时候,最少要导入下面三个架包:
log4j-1.2.17.jar
mybatis-3.2.8.jar
mysql-connector-java-5.1.7-bin.jar
mybatis-3.2.8.jar
mysql-connector-java-5.1.7-bin.jar
但是,为了以后和Spring整合等通常加入以下jar包:
asm-3.3.1.jar
c3p0-0.9.1.2.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
mybatis-3.2.8.jar
mybatis-spring-1.2.2.jar
mysql-connector-java-5.1.7-bin.jar(连接MySQL数据库的架包,使用什么数据库,就用什么架包)
c3p0-0.9.1.2.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
mybatis-3.2.8.jar
mybatis-spring-1.2.2.jar
mysql-connector-java-5.1.7-bin.jar(连接MySQL数据库的架包,使用什么数据库,就用什么架包)
二、新建持久化类和数据表
1、新建持久化类
import java.util.Date;
public class Student {
private Integer id;
private String lastName;
private String email;
private Date birth;
// 提供对应的set/get方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
//有参无参构造器
public Student(Integer id, String lastName, String email, Date birth) {
super();
this.id = id;
this.lastName = lastName;
this.email = email;
this.birth = birth;
}
public Student() {
super();
}
}
2、在数据库中,建立数据表
create database MybatisDB charset=utf8;
use MybatisDB;
CREATE TABLE students(
id INT AUTO_INCREMENT PRIMARY KEY,
last_name VARCHAR(20),
email VARCHAR(20),
birth DATE
)charset=utf8;
三、加入 MyBatis 配置文件
加入位置:创建的位置(src下)
文件的名称(一般是mybatis-config.xml)
mybatis-config.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="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml" />
</mappers>
</configuration>
四、加入 MyBatis 映射文件
创建位置:对应持久化类的包下
映射文件名称:简单类名+Mapper
映射文件的内容:
<?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, 用来唯一的标识该 配置文件. 和 id 有相同的作用 -->
<mapper namespace="com.zuxia.model.StudentMapper">
<!-- 配置一个 select 节点,id:用于表示该节点,用于调用该节点;resultType:返回的类型是什么 -->
<select id="selectStudent" resultType="com.zuxia.model.Student">
<!--可以使用别名解决类中的属性名和表中的列名不一致的问题-->
select id,last_name lastName,email,birth from students where id = #{id}
</select>
</mapper>
新建一个测试类或Main方法
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
try {
//第一个参数:StudentMapper的namespace + 节点的id值
//第二个参数:要查询的是哪条记录
Student student = openSession.selectOne("com.zuxia.model.StudentMapper.selectStudent",50);
System.out.println(student);
}finally{
//关闭
openSession.close();
}