IDEA+mybatis实现员工管理系统

原文链接:IDEA+mybatis实现员工管理系统 – 每天进步一点点

 

本文主要实现《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();
}
 
 
}

实现效果如下:

 

posted on 2025-12-01 16:54  longkui  阅读(0)  评论(0)    收藏  举报

导航