1. 导入相关jar包。
需要导入的jar包有两部分,一个是MyBatis的jar包。
另外由于MyBatis是操作数据库的,我们以MySQL数据库作为示范,所以还要导入MySQL数据库的jar包。
导入jar包的方式有很多种,最简单的就是去官网下载jar包,然后复制到代码目录里。
但这里我们通过添加MAVEN依赖的方式导入。
2. 通过MAVEN导入依赖。
至于MAVEN是什么,请参照本站有关MAVEN的文章。要说的是,MAVEN其实很简单。
需要添加的MAVEN依赖如下:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
3. 导入并撰写配置文件mybatis-config.xml
- mybatis-config.xml 用于配置mybatis的基本参数(数据库接口类型、用户名、密码)
- 为了对应MAVEN目录结构,mybatis-config.xml放在resources目录下。
基本上就是固定格式<?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"/> <!-- JDBC:手动完成事物管理; MANAGED:由第三方完成事物管理 --> <dataSource type="POOLED"> <!-- POOLED:使用数据库连接池;UNPOOLED:不使用数据库连接池 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/java_all"/> <property name="username" value="root"/> <property name="password" value="123123"/> </dataSource> </environment> </environments> </configuration>
4. 创建Entity类和DAO接口
MyBatis的存在意义就是代替DAO接口实现类,所以不需要再创建DAO接口实现类了。
创建Entity类
/**
* 定义实体类
* 1. 实体类定义在entity包下
* 2. 实体类必须实现Serializable接口
* 3. 实体类属性名字和数据库字段名一致,这样可以自动赋值
* 4. 实体类属性数值类型使用包装类,并提供get、set方法
* 5. 实体类必须提供无参数的构造方法
* 6. 实体类可以重载toString方法,这样方便println直接使用。
*/
package com.royotech.entity;
import java.io.Serializable;
public class Person implements Serializable{
private Integer id;
private String name;
private String birthday;
private String telephone;
private String address;
public Person() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", birthday=" + birthday + ", telephone=" + telephone
+ ", address=" + address + "]";
}
}
创建DAO接口
/**
*
* DAO:Data Access Object,DAO接口是Entity类和数据库之间的连接纽带,封装增删改查的操作。
*
* DAO接口:实体类名+DAO,所有DAO接口都在DAO包下。
*
* 一个表 一个实体 一个DAO接口
*/
package com.royotech.dao;
import com.royotech.entity.Person;
public interface PersonDAO {
public Person selectPersonById(Integer id);
}
5. 撰写XXXMapper.xml文件
撰写PersonDAOMapper.xml映射文件
- XXXMapper.xml 配置一个DAO接口方法要执行的SQL语句。XXXMapper.xml文件和DAO接口一一对应。
- 为了对应MAVEN目录结构,XXXMapper.xml放在resources/mappers子目录下。
<?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="com.royotech.dao.PersonDAO"> <!-- 对应的DAO接口的全类名 --> <select id = "selectPersonById" resultType="com.royotech.entity.Person"> <!-- id对应类下面的方法名;resultType对应该方法的返回值类型--> select * from t_person where id = #{id}<!-- 方法中形参的名字 --> </select> </mapper>
6. 在mybatis-config.xml中注册mapper
<?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"/> <!-- JDBC:手动完成事物管理; MANAGED:由第三方完成事物管理 -->
<dataSource type="POOLED"> <!-- POOLED:使用数据库连接池;UNPOOLED:不使用数据库连接池 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/java_all"/>
<property name="username" value="root"/>
<property name="password" value="123123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/PersonDAOMapper.xml"/>
</mappers>
</configuration>
7. 大功告成,测试一下结果吧。
建立一个SelectPerson.java文件
package com.royotech.view;
import java.io.InputStream;
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.royotech.dao.PersonDAO;
import com.royotech.entity.Person;
public class SelectPerson {
public static void main(String[] args) throws Exception{
//1. 读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//2. 获取SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3. 获取SqlSession
SqlSession sqlSession = factory.openSession();
//4. 获取PersonDAO实现类对象
PersonDAO dao = sqlSession.getMapper(PersonDAO.class);
//5. 调用DAO的方法
Person p = dao.selectPersonById(3);
System.out.println(p);
//6. 关闭sqlSession
sqlSession.close();
}
}
数据库结构、数据和运行结果如下:
[…] 请参考:http://www.leonwish.com/archives/59 […]