★学习目标:
完成一个员工管理系统,能够实现如下功能根据id查询员工信息、新增员工信息、根据id修改员工信息、根据id删除员工信息
★思考任务:
MyBatis中核心配置文件怎么加载配置文件?
★任务学习:
★知识要点:
本案例要求根据员工表在数据库中创建一个employee表,并利用本章所学知识完成一个员工管理系统,该系统需要实现以下几个功能:
根据id查询员工信息;新增员工信息;
根据id修改员工信息;根据id删除员工信息。
项目搭建:建一个名称为mybatisdemo的项目,项目的具体搭建过程请参考1.3节。
数据准备:在mybatis数据库中创建employee表,并在employee表中插入几条数据。
use mybatis;
create table employee(
id int primary key auto_increment,
name varchar(20) not null,
age int not null,
position varchar(20));
insert into employee(id,name,age,position) values(null,'张三',20,'员工‘),
(null,'李四',18, '员工'),(null,'王五',35,'经理');
POJO类准备:在项目src/main/java目录下创建com.itheima.pojo包,在该包下创建持久化类Employee,并在类中声明id(编号)、name(姓名)、age(年龄)和position(职位)属性,以及属性对应的getter/setter方法。
public class Employee {
private Integer id; privateString name;
private Integer age;
private String position;
// 省略getter/setter方法
@Override
public String toString() {
return"Employee{" + "id=" + id + ", name=" + name +
",age=" + age + ", position=" + position +'}’;
}}
编写映射文件:在项目src/main/java目录下创建com.itheima.mapper包,在com.itheima.mapper包下创建映射文件EmployeeMapper.xml,该文件主要用于实现SQL语句和Java对象之间的映射,部分文件内容如下。
<mapper namespace="com.itheima.mapper.EmployeeMapper">
<selectid="findById"parameterType="Integer”
resultType="com.itheima.pojo.Employee"> select * from employee whereid = #{id}
</select>
<insert id="addEmployee" parameterType="com.itheima.pojo.Employee">
insert into employee(id,name,age,position)values
(#{id},#{name},#{age},#{position})
</insert></mapper>
修改mybatis-config.xml核心配置文件:在mybatis-config.xml映射文件的<mappers>元素下添加EmployeeMapper.xml映射文件路径的配置,用于将EmployeeMapper.xml映射文件加载到程序中。
<mapper
resource="com/itheima/mapper/EmployeeMapper.xml">
</mapper>
编写MyBatisUtils工具类 :在项目src/main/java目录下创建com.itheima.utils包,在该包下创建MyBatisUtils工具类,该类用于封装读取配置文件信息的代码。
public class MyBatisUtils {
private static SqlSessionFactorysqlSessionFactory= null;
static { try{
// 使用MyBatis提供的Resources类加载MyBatis的配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
// 构建SqlSessionFactory工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {e.printStackTrace();}}
public static SqlSessiongetSession(){//获取SqlSession对象的静态方法
return sqlSessionFactory.openSession();}
}

