在数据库中创建一个employee表,实现以下几个功能:

(1) 根据id查询员工信息;

(2) 新增员工信息;

(3) 根据id修改员工信息;

(4) 根据id删除员工信息;

(5) 查询所有员工信息;

步骤:

  1. 在数据库中创建employee表,插入几条数据;
  2. 打开idea创建项目;
  3. 配置pom.xml文件,引入三个依赖以及自动编译信息;
    <build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>
  4. 在src/main/resources目录下创建db.properties和mybatis-config.xml文件;

  5. 在src/main/java目录下创建org.example.pojo包,在包里创建Employee实体类;

  6. 在src/main/resources目录下创建mapper文件夹,在文件夹下创建映射文件EmployeeMapper.xml,配置好Sql语句;

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="org.example.pojo.Employee"><resultMap id="EmployeeMap" type="org.example.pojo.Employee"><id property="id" column="id"/><result property="name" column="name"/><result property="age" column="age"/><result property="position" column="position"/></resultMap><select id="findAll" resultMap="EmployeeMap">select * from employee</select><select id="findById" parameterType="int" resultType="org.example.pojo.Employee">select * from employee where id = #{id}</select><insert id="addEmployee" parameterType="org.example.pojo.Employee">insert into employee (id,name,age,position) values (#{id},#{name},#{age},#{position})</insert><update id="updateEmployee" parameterType="org.example.pojo.Employee">update employee set name = #{name} ,age = #{age},position = #{position} where id = #{id}</update><delete id="deleteEmployee" parameterType="int">delete from employee where id = #{id}</delete>
    </mapper>
  7. 回到mybatis-config.xml文件配置mapper文件路径,即添加EmployeeMapper.xml文件的路径;

  8. 在src/main/java目录下创建utils包,在包里创建MyBatisUtils类;

    package utils;import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.Reader;/*** @ClassName utils.MyBatisUtils* @Author 86155* @Description TODO* @createTime 2022年02月23日 16:40:00*/
    public class MyBatisUtils {private static SqlSessionFactory sqlSessionFactory= null;static {try {Reader reader = Resources.getResourceAsReader("mybatis-config.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}public static SqlSession getSession(){return sqlSessionFactory.openSession();}
    }
    
  9. 在src/test/java目录下创建Test包,在包里创建EmployeeTest测试类,测试增删改查四个功能;

    package Test;import org.apache.ibatis.session.SqlSession;
    import org.example.pojo.Employee;
    import org.junit.Test;
    import utils.MyBatisUtils;import java.util.List;/*** @ClassName EmployeeTest* @Author 86155* @Description TODO* @createTime 2022年02月23日 16:39:00*/
    public class EmployeeTest {@Test//根据id查询员工信息public void findByIdTest(){SqlSession sqlSession = MyBatisUtils.getSession();Employee employee = sqlSession.selectOne("findById",1);System.out.println(employee.toString());sqlSession.commit();sqlSession.close();}@Test//新增员工信息public void addEmployeeTest(){SqlSession sqlSession = MyBatisUtils.getSession();Employee employee = new Employee();//employee.setId(4);//不用设置id也行,自增employee.setName("中国");employee.setAge(26);employee.setPosition("员工");int add = sqlSession.insert("addEmployee",employee);if (add > 0){System.out.println("成功添加" + add + "条数据!");}else {System.out.println("添加失败");}sqlSession.commit();sqlSession.close();}@Test//根据id修改员工信息,四个字段必须设置值,不然会报错,修改单个信息还在思考中!public void updateEmployee(){SqlSession sqlSession = MyBatisUtils.getSession();Employee employee = new Employee();employee.setId(3);employee.setName("小强");employee.setAge(36);employee.setPosition("技术总监");int update = sqlSession.update("updateEmployee",employee);if (update > 0){System.out.println("成功修改" + update + "条数据!");}else {System.out.println("修改失败");}sqlSession.commit();sqlSession.close();}@Test//根据id删除员工信息public void deleteEmployee(){SqlSession sqlSession = MyBatisUtils.getSession();int delete = sqlSession.delete("deleteEmployee",4);if (delete > 0){System.out.println("成功删除" + delete + "条数据!");}else {System.out.println("删除失败");}sqlSession.commit();sqlSession.close();}@Test//查询所有public void FindAll(){SqlSession sqlSession = MyBatisUtils.getSession();List<Employee> list = sqlSession.selectList("findAll");for (Employee employee:list){System.out.println(employee.toString());}sqlSession.commit();sqlSession.close();}
    }
    

修改功能:先查询再修改。

@Test//根据id修改员工信息public void updateEmployee(){SqlSession sqlSession = MyBatisUtils.getSession();//先查询再修改Employee employee = sqlSession.selectOne("findById",3);employee.setName("小强");employee.setAge(22);employee.setPosition("技术总监");int update = sqlSession.update("updateEmployee",employee);if (update > 0){System.out.println("成功修改" + update + "条数据!");}else {System.out.println("修改失败");}sqlSession.commit();sqlSession.close();}

问题:

1.org.apache.ibatis.reflection.ReflectionException异常:xml文件的一个字段写错了,和数据库里的字段不一致。

2.sql语句“delete * from employee where id = #{id}”多了一个*号。

3.程序运行正常,没有报错,但是信息也没有保存到数据库中,我做了一下修改操作:以新增员工信息为例:

在第一行创建会话对象:SqlSession sqlSession = MyBatisUtils.getSession()将红线MyBatisUtils.getSession都修改为sqlSession。其他操作也是,最后数据库成功保存信息。涉及到MyBatis的工作原理MyBatis的工作原理以及核心流程介绍 - MyBatis中文官网,创建了会话对象才能操作数据库。

4.解决异常【MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction】

错误产生的原因就是:涉及到事务锁的问题,接口响应时间超长,耗时几十秒才返回错误提示,后台日志中出现Lock wait timeout exceeded; try restarting transaction的错误,出现了高并发现象。因为我的修改和删除操作都是同一条数据库信息,发生了冲突。

5.Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'position' cannot be null。

修改操作时,字段position的值没有设置值。

6.Could not find resource——mybatis 找不到映射器xml文件,右击resources->Mark directory as ->Resources Root(在比较下面),修改之后resources文件夹出现四天横线的黄色部分。

MyBatis案例一:员工管理系统相关推荐

  1. Mybatis案例:员工管理系统

    Mybatis案例:员工管理系统 一.项目要求 二.项目准备 IDEA中创建项目及模块 三.Mybaits项目实战 第一步,按图手动导入相关JAR 第二步,准备数据库及数据表 第三步.启动IDEA,按 ...

  2. 【自我介绍】------Mr.张小白(案例:员工管理系统的MyBatis的实现)

    @自我介绍 欢迎各位来看我的这篇文章 你好! 这是我第一次使用发表文章.操作的还不太熟练,在接下来的日子里,希望我能够和CSDN这个大家庭一起成长,一起进步. 新的改变(IDEA使用) 我现在是一名在 ...

  3. JAVA EE——案例:员工管理系统

    目录 1.题目 2.文件目录 3. 引入依赖--pom.xml 4.配置文件--myBatis-config.xml 5.映射文件--EmployeeMapper.xml 6.java类--Emplo ...

  4. javaweb项目案例:员工管理系统

    1.项目需求 使用Javaweb+MySQL实现一个员工管理系统,能对员工进行增删改查,使用SSH框架开发. 2.数据表设计 manager(管理员表) CREATE TABLE `manager` ...

  5. Mybatis学习-(案例)员工管理系统(二)——Maven仓库

    ❤ (ɔˆз(ˆ⌣ˆc)"玥"--乃古上神珠也.见者好运连连,点个关注,咱们来玥方长! (ง •̀_•́)ง加油

  6. 手把手教你基于【SpringBoot+MyBatis】实现员工管理系统‍【附完整源码】

    一.写在前面 Hello,你好呀,我是灰小猿,一个超会写BUG的程序猿

  7. c语言系统分工 ppt,C语言案例员工管理系统.ppt

    <C语言案例员工管理系统.ppt>由会员分享,可在线阅读,更多相关<C语言案例员工管理系统.ppt(11页珍藏版)>请在人人文库网上搜索. 1.案例:员工管理系统,武汉纺织大学 ...

  8. 基于springboot+thymeleaf+mybatis的员工管理系统 —— 增删改查

    员工管理系统 - 增删改查 entity 查询所有功能 查询所有的页面 emplist.html 保存员工 保存员工的页面 addEmp.html 删除员工 修改员工 根据id查询员工 修改员工信息 ...

  9. 基于springboot+thymeleaf+mybatis的员工管理系统 —— 登录与注册

    员工管理系统 - 登录与注册功能 创建项目 pom.xml 数据库表设计和环境准备 建表SQL application.properties 用户注册与登录功能 entity dao service ...

  10. SpringBoot员工管理系统(整合Mybatis+mysql)

    SpringBoot员工管理系统(整合Mybatis+mysql) 前部分:https://blog.csdn.net/weixin_43501359/article/details/11271466 ...

最新文章

  1. 东京奥运会将利用 AI 识别可疑人员
  2. 参观云栖小镇体会_我院留学生赴云栖小镇参观学习
  3. 基于MATLAB的IIR滤波器设计与实现
  4. shields 徽标_徽标不够用时如何设计应用程序图标
  5. 一篇博客读懂设计模式之---动态代理与反射
  6. Spring基于Annotation装配Bean
  7. 神经网络为什么需要激活函数
  8. Variant 数组
  9. 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件
  10. CentOS设置静态IP
  11. 敏捷思维-架构设计中的方法学(12)Refactoring
  12. 如何用python处理pdf_如何使用Python玩转PDF各种骚操作?
  13. 油猴脚本插件 千图网无水印原图素材
  14. 基2时域采样快速傅里叶变换、反变换算法在python上的实现(自制轮子)
  15. 自定义view————涂鸦画板
  16. 5款App帮你轻松搞定自定义锁屏
  17. Linux Gnome 桌面美化
  18. JavaScript 移动端点击事件延迟问题
  19. Mysql error 1045的解决
  20. 田径运动会成绩管理系统

热门文章

  1. Power Pivot入门(Excel2021专业加强版)
  2. CorelDRAWX4的VBA插件开发(二十七)使用C++制作动态连接库DLL辅助VBA构键强大功能-(1)前言和准备工作
  3. html5制作端午节游戏,零代码怎么制作一个端午节H5小游戏页面?
  4. 使用jquery如何判断checkbox是否被选中
  5. c语言考研题库谭浩强,C程序设计谭浩强第4版考研教材下载及真题视频讲解
  6. 免费AI标注工具-医疗影像标注工具
  7. 面试,如何使用数据仓库?
  8. 计算机与网络连接需要什么设置,如何设置宽带连接,详细教您如何设置宽带连接...
  9. 异或 ^ 的几个作用
  10. 英语中有些单词缩写后面为什么要加个点