本文主要实现《Java EE企业级应用开发教程(Spring+SpringMVC+Mybatis)》第2版中的第2章课后习题:员工管理系统。
前面的搭建过程参考第一章代码:IDEA(2020版)实现MyBatis入门程序 – 每天进步一点点
本文源代码(访问密码: 3921):
MyBatis02.zip: https://url47.ctfile.com/f/64055047-1502033554-ff37b6?p=3921
本文可能遇到的报错:
java.io.IOException: Could not find resource mybatis-config.xml
IDEA 连接数据库报错Public Key Retrieval is not allowed
1.数据库部分
在第一章代码的基础上,我们首先创建数据库文件
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,'经理');
在数据里执行,查看是否正常

2.创建实体类
右击“pojo”文件夹,选择“New—>Java Class”

java实体类的名字叫 Employee

代码参考如下:
package com.itheima.pojo;
/**
* 员工持久化类
*/
public class Employee {
private Integer id; // 主键id
private String name; // 姓名
private Integer age; // 年龄
private String position; // 职位
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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
@Override
public String toString() {
return "Employee{" + "id=" + id + ", name=" + name +
", age=" + age + ", position=" + position + '}';
}
}
2.创建mapper文件
在第一章代码的基础上,右击mapper文件夹,

文件名称选择“EmployeeMapper.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="com.itheima.mapper.EmployeeMapper">
<select id="findById" parameterType="Integer"
resultType="com.itheima.pojo.Employee">
select * from employee where id = #{id}
</select>
<insert id="addEmployee" parameterType="com.itheima.pojo.Employee">
insert into employee(id,name,age,position)values
(#{id},#{name},#{age},#{position})
</insert>
<update id="updateEmployee" parameterType="com.itheima.pojo.Employee">
update employee set name= #{name},age = #{age},position= #{position} where
id = #{id}
</update>
<delete id="deleteEmployee" parameterType="Integer">
delete from employee where id=#{id}
</delete>
</mapper>

3.创建工具类
因为要做增删改查操作,所以可以把第1章sqlSession部分封装一下,封装成工具类
右击“itheima—>New—>Package”

文件夹名称选择“utils”,然后回车

然后右击刚才创建的 utils文件夹,选择“New—>Java Class”

文件名称输入 MyBatisUtils,然后点击回车

代码参考如下:
package com.itheima.utils;
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;
/**
* 工具类
*/
public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory = null;
// 初始化SqlSessionFactory对象
static {
try {
// 使用MyBatis提供的Resources类加载MyBatis的配置文件
Reader reader =
Resources.getResourceAsReader("mybatis-config.xml");
// 构建SqlSessionFactory工厂
sqlSessionFactory =
new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取SqlSession对象的静态方法
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}

4.修改mybatis-config.xml文件
第1章的mapper文件扫描的userMapper.xml,现在改成要扫描EmployeeMapper.xml文件,修改如下
<mapper resource="mapper/EmployeeMapper.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>
<!-- 环境配置 -->
<!-- 加载类路径下的属性文件 -->
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 数据库连接相关配置 ,db.properties文件中的内容-->
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<!-- mapping文件路径配置 -->
<mappers>
<!-- <mapper resource="mapper/UserMapper.xml"/>-->
<mapper resource="mapper/EmployeeMapper.xml"/>
</mappers>
</configuration>

3.创建测试类
右击”Test“文件夹,选择”New—>Java Class“

测试类名称为MyBatisTest
参考代码如下:
package Test;
import com.itheima.pojo.Employee;
import com.itheima.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class MyBatisTest {
//查询
@Test
public void findByIdTest() {
// 通过工具类生成SqlSession对象
SqlSession session = MyBatisUtils.getSession();
Employee employee =
session.selectOne("findById", 2);
System.out.println(employee);
session.commit();
// 关闭SqlSession
session.close();
}
//新增
@Test
public void insertEmployeeTest() {
// 通过工具类生成SqlSession对象
SqlSession session = MyBatisUtils.getSession();
Employee employee = new Employee();
employee.setId(4);
employee.setName("赵六");
employee.setAge(55);
employee.setPosition("总裁");
int result = session.insert("addEmployee", employee);
if (result > 0) {
System.out.println("成功插入" + result + "条数据");
} else {
System.out.println("插入数据失败");
}
System.out.println(employee.toString());
session.commit();
// 关闭SqlSession
session.close();
}
//更新
@Test
public void updateEmployeeTest() {
// 通过工具类生成SqlSession对象
SqlSession session = MyBatisUtils.getSession();
Employee employee = new Employee();
employee.setId(2);
employee.setName("小四");
employee.setAge(23);
employee.setPosition("经理");
int result = session.update("updateEmployee", employee);
if (result > 0) {
System.out.println("成功更新" + result + "条数据");
} else {
System.out.println("更新数据失败");
}
System.out.println(employee.toString());
session.commit();
// 关闭SqlSession
session.close();
}
//删除
@Test
public void deleteEmployeeTest() {
// 通过工具类生成SqlSession对象
SqlSession session = MyBatisUtils.getSession();
int result = session.delete("deleteEmployee", 4);
if (result > 0) {
System.out.println("成功删除" + result + "条数据");
} else {
System.out.println("删除数据失败");
}
session.commit();
// 关闭SqlSession
session.close();
}
}
实现效果如下:
