本文主要实现《Java EE企业级应用开发教程(Spring+SpringMVC+Mybatis)》第2版中的第2章课后习题:员工管理系统。

前面的搭建过程参考第一章代码:

本文源代码:https://box356.lanzoub.com/i6tre2r5hlha

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();
    }


}

实现效果如下: