1.配置开发环境
---导入mybatis-3.2.7.jar包和mysql-connector.jar包
---添加SqlMapConfig.xml和EmpMapper.xml两个配置文件
2.写一个实体类Emp
package entity;
import java.io.Serializable;
public class Emp implements Serializable{
private Integer id;
private String name;
private Double salary;
private Integer age;
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 Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
3.配置SqlMapConfig.xml文件(指定数据库连接参数和SQL定义文件)
<?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="environment">
<environment id="environment">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///mybatis?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- 加载sql定义文件 -->
<mappers>
<mapper resource="EmpMapper.xml"/>
</mappers>
</configuration>
4.配置EmpMapper.xml文件(定义SQL语句:namespace是包名.接口名)
<?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.EmpDao">
<select id="findAll" resultType="entity.Emp">
select * from emp
</select>
<select id="findById" parameterType="int" resultType="entity.Emp">
select * from emp where id=#{id}
</select>
</mapper>
5.写一个工具类MyBatisUtil,用于获取SqlSession
public class MyBatisUtil {
public static SqlSession getSqlSession(){
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//加载SqlMapConfig.xml文件
String conf = "SqlMapConfig.xml";
//把文件编程一个流(MyBatisUtil是当前类的名字)
InputStream confStream = MyBatisUtil.class.getClassLoader().getResourceAsStream(conf);
//获取SqlSessionFactory
SqlSessionFactory factory = builder.build(confStream);
//获取SqlSession
SqlSession session = factory.openSession();
return session;
}
}
6.写一个接口类:EmpDao
package dao;
import java.util.List;
import entity.Emp;
public interface EmpDao {
public List<Emp> findAll();
public Emp findById(int id);
}
7.写一个测试类
public class TestEmp {
public static void main(String[] args) {
SqlSession session = MyBatisUtil.getSqlSession();
//无参的情况
// List<Emp> list = session.selectList("findAll");
EmpDao empDao = session.getMapper(EmpDao.class);
//这个方法所执行的就是session.selectList("findAll");只是被封装了
List<Emp> list = empDao.findAll();
for(Emp e:list){
System.out.println(e.getName());
}
//有参的情况
//Emp emp = session.selectOne("findById", 2);
Emp emp = empDao.findById(2);
if(emp!=null){
System.out.println(emp.getName());
}else{
System.out.println("未查到此条记录");
}
//增删改都需要提交事务,查询不需要
//session.commit();
session.close();
}
}
8.运行测试方法,会输出相应的结果