学习内容:

需求

使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样)

jar 包下载:https://blog.csdn.net/zzvar/article/details/115831533

环境准备

  • 添加项目需要的jar包(也可以通过配置maven,就不需要导入 jar 包了)
    1)mysql-connection-java-5.1.26-bin.jar(jar包可以根据自己需要更换)
      MySQL数据库的JDBC驱动包,访问MySQL必须导入的jar包
    2)mybatis-3.4.5.jar(jar包可以根据自己需要更换)
      MyBatis 框架的核心jar包
  • 创建 Teacher 表
    1)建表语句如下:
  1. DROP TABLE IF EXISTS `teacher`;
  2. CREATE TABLE `teacher` (
  3. `userID` int(11) NOT NULL AUTO_INCREMENT,
  4. `userName` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '用户名',
  5. `sex` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '性别',
  6. `birthYear` date NOT NULL COMMENT '生日',
  7. `degree` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '学历',
  8. `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '职称',
  9. `grade` date NULL DEFAULT NULL COMMENT '入职时间',
  10. `collegeID` int(11) NOT NULL COMMENT '院系',
  11. PRIMARY KEY (`userID`) USING BTREE
  12. ) ENGINE = InnoDB AUTO_INCREMENT = 10012 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;

 2)建表后结果如下图:

 3)项目的目录结构如下(非Maven项目):

代码

  • db.properties文件
  1. db.driverClassName=com.mysql.jdbc.Driver
  2. db.url=jdbc:mysql://localhost:3306/web_test02?characterEncoding=utf-8&serverTimezone=GMT%2b8:00&useSSL=false
  3. #(这里是我的数据库名,你要用你的)
  4. db.username=root
  5. #(这里是我的数据库密码,你要用你的)
  6. db.password=admin
  • log4j.properties 文件
  1. # Global logging configuration
  2. log4j.rootLogger=ERROR, stdout
  3. # MyBatis logging configuration...
  4. log4j.logger.com.yy.homework.mapper=TRACE
  5. # Console output...
  6. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  7. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  8. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
  • mybatis-config 文件
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <properties resource="db.properties"/>
  7. <typeAliases>
  8. <package name="com.yy.homework.domain"/>
  9. </typeAliases>
  10. <environments default="dev">
  11. <environment id="dev">
  12. <transactionManager type="JDBC"/>
  13. <dataSource type="POOLED">
  14. <property name="driver" value="${db.driverClassName}"/>
  15. <property name="url" value="${db.url}"/>
  16. <property name="username" value="${db.username}"/>
  17. <property name="password" value="${db.password}"/>
  18. </dataSource>
  19. </environment>
  20. </environments>
  21. <mappers>
  22. <mapper resource="com/yy/homework/mapper/TeacherMapper.xml"/>
  23. </mappers>
  24. </configuration>
  • ITeacherDAO 文件
  1. package com.yy.homework.dao;
  2. import com.yy.homework.domain.Teacher;
  3. import java.util.List;
  4. /**
  5. * @program: Mybatis_test03
  6. * @ClassName ITeacher
  7. * @description:定义实现 CRUD 的接口
  8. * @author: YanYang
  9. * @create: 2021-04-17 22:10
  10. **/
  11. public interface ITeacherDAO {
  12. // 增加
  13. void insert(Teacher t);
  14. // 删除
  15. void delete(int id);
  16. // 更新
  17. void update(Teacher t);
  18. // 根据id查询一个教师信息
  19. Teacher select(int id);
  20. // 查询所有教师信息
  21. List<Teacher> selectAll();
  22. }
  • TeacherDAOImpl 文件
  1. package com.yy.homework.dao.impl;
  2. import com.yy.homework.dao.ITeacherDAO;
  3. import com.yy.homework.domain.Teacher;
  4. import com.yy.homework.util.MybatisUtil;
  5. import org.apache.ibatis.session.SqlSession;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. /**
  9. * @program: Mybatis_test03
  10. * @ClassName TeacherDAOImpl
  11. * @description: 实现接口中的方法
  12. * @author: YanYang
  13. * @create: 2021-04-17 22:19
  14. **/
  15. public class TeacherDAOImpl implements ITeacherDAO {
  16. SqlSession sqlSession = null;
  17. @Override
  18. public void insert(Teacher t) {
  19. try {
  20. sqlSession = MybatisUtil.getInstance().openSession();
  21. sqlSession.insert("com.yy.homework.mapper.TeacherMapper.insert", t);
  22. sqlSession.commit();
  23. } catch (Exception e) {
  24. e.printStackTrace();
  25. } finally {
  26. sqlSession.close();
  27. }
  28. }
  29. @Override
  30. public void delete(int id) {
  31. try {
  32. sqlSession = MybatisUtil.getInstance().openSession();
  33. sqlSession.delete("com.yy.homework.mapper.TeacherMapper.delete", id);
  34. sqlSession.commit();
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. } finally {
  38. sqlSession.close();
  39. }
  40. }
  41. @Override
  42. public void update(Teacher t) {
  43. try {
  44. sqlSession = MybatisUtil.getInstance().openSession();
  45. sqlSession.update("com.yy.homework.mapper.TeacherMapper.update", t);
  46. sqlSession.commit();
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. } finally {
  50. sqlSession.close();
  51. }
  52. }
  53. @Override
  54. public Teacher select(int id) {
  55. Teacher teacher = null;
  56. try {
  57. sqlSession = MybatisUtil.getInstance().openSession();
  58. teacher = sqlSession.selectOne("com.yy.homework.mapper.TeacherMapper.select", id);
  59. } catch (Exception e) {
  60. e.printStackTrace();
  61. } finally {
  62. sqlSession.close();
  63. }
  64. return teacher;
  65. }
  66. @Override
  67. public List<Teacher> selectAll() {
  68. List<Teacher> list = new ArrayList<>();
  69. try {
  70. sqlSession = MybatisUtil.getInstance().openSession();
  71. list = sqlSession.selectList("com.yy.homework.mapper.TeacherMapper.selectAll");
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. } finally {
  75. sqlSession.close();
  76. }
  77. return list;
  78. }
  79. }
  • Teacher 文件
  1. package com.yy.homework.domain;
  2. import lombok.*;
  3. import java.util.Date;
  4. /**
  5. * @program: Mybatis_test03
  6. * @ClassName Teacher
  7. * @description: 教师JavaBean
  8. * @author: YanYang
  9. * @create: 2021-04-17 22:12
  10. **/
  11. // @Setter @Getter @AllArgsConstructor @NoArgsConstructor @ToString
  12. public class Teacher {
  13. private Integer userID;
  14. private String userName;
  15. private String sex;
  16. private Date birthYear;
  17. private String degree;
  18. private String title;
  19. private Date grade;
  20. private Integer collegeID;
  21. public Teacher() {
  22. }
  23. public Teacher(Integer userID, String userName, String sex, Date birthYear, String degree, String title, Date grade, Integer collegeID) {
  24. this.userID = userID;
  25. this.userName = userName;
  26. this.sex = sex;
  27. this.birthYear = birthYear;
  28. this.degree = degree;
  29. this.title = title;
  30. this.grade = grade;
  31. this.collegeID = collegeID;
  32. }
  33. @Override
  34. public String toString() {
  35. return "Teacher{" +
  36. "userID=" + userID +
  37. ", userName='" + userName + '\'' +
  38. ", sex='" + sex + '\'' +
  39. ", birthYear=" + birthYear +
  40. ", degree='" + degree + '\'' +
  41. ", title='" + title + '\'' +
  42. ", grade=" + grade +
  43. ", collegeID=" + collegeID +
  44. '}';
  45. }
  46. public Integer getUserID() {
  47. return userID;
  48. }
  49. public void setUserID(Integer userID) {
  50. this.userID = userID;
  51. }
  52. public String getUserName() {
  53. return userName;
  54. }
  55. public void setUserName(String userName) {
  56. this.userName = userName;
  57. }
  58. public String getSex() {
  59. return sex;
  60. }
  61. public void setSex(String sex) {
  62. this.sex = sex;
  63. }
  64. public Date getBirthYear() {
  65. return birthYear;
  66. }
  67. public void setBirthYear(Date birthYear) {
  68. this.birthYear = birthYear;
  69. }
  70. public String getDegree() {
  71. return degree;
  72. }
  73. public void setDegree(String degree) {
  74. this.degree = degree;
  75. }
  76. public String getTitle() {
  77. return title;
  78. }
  79. public void setTitle(String title) {
  80. this.title = title;
  81. }
  82. public Date getGrade() {
  83. return grade;
  84. }
  85. public void setGrade(Date grade) {
  86. this.grade = grade;
  87. }
  88. public Integer getCollegeID() {
  89. return collegeID;
  90. }
  91. public void setCollegeID(Integer collegeID) {
  92. this.collegeID = collegeID;
  93. }
  94. }
  • TeacherMapper.xml 文件
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.yy.homework.mapper.TeacherMapper">
  6. <insert id="insert">
  7. insert into Teacher (userName, sex, birthYear,degree, title, grade, collegeID) values (#{userName},
  8. #{sex}, #{birthYear}, #{degree}, #{title}, #{grade}, #{collegeID})
  9. </insert>
  10. <delete id="delete">
  11. delete from Teacher where userID = #{userID}
  12. </delete>
  13. <update id="update">
  14. update Teacher set userName = #{userName}, sex = #{sex}, birthYear = #{birthYear}, degree = #{degree},
  15. title = #{title}, grade = #{grade}, collegeID = #{collegeID} where userID = #{userID}
  16. </update>
  17. <select id="select" resultType="Teacher">
  18. select * from teacher where userID = #{id}
  19. </select>
  20. <select id="selectAll" resultType="Teacher">
  21. select * from teacher
  22. </select>
  23. </mapper>
  • MybatisUtil 文件
  1. package com.yy.homework.util;
  2. import org.apache.ibatis.io.Resources;
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. /**
  9. * @program: Mybatis_test03
  10. * @ClassName MybatisUtil
  11. * @description: 工具类
  12. * @author: YanYang
  13. * @create: 2021-04-17 22:20
  14. **/
  15. public class MybatisUtil {
  16. /**
  17. * 单例模式
  18. */
  19. private MybatisUtil() {}
  20. private static MybatisUtil mybatisUtil = new MybatisUtil();
  21. public static MybatisUtil getInstance() {
  22. return mybatisUtil;
  23. }
  24. private static SqlSessionFactory factory = null;
  25. static {
  26. try {
  27. // 获取 SqlSession 的工厂类
  28. InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
  29. factory = new SqlSessionFactoryBuilder().build(in);
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. }
  33. }
  34. public SqlSession openSession() {
  35. // 获取 SqlSession 对象
  36. return factory.openSession();
  37. }
  38. }
  • 测试类 文件
  1. package com.yy.homework.dao.impl.test;
  2. import com.yy.homework.dao.ITeacherDAO;
  3. import com.yy.homework.dao.impl.TeacherDAOImpl;
  4. import com.yy.homework.domain.Teacher;
  5. import org.junit.Test;
  6. import java.util.Date;
  7. import static org.junit.Assert.*;
  8. /**
  9. * @program: Mybatis_test03
  10. * @ClassName TeacherDAOImplTest
  11. * @description:
  12. * @author: YanYang
  13. * @create: 2021-04-18 11:52
  14. **/
  15. public class TeacherDAOImplTest {
  16. ITeacherDAO td = new TeacherDAOImpl();
  17. @Test
  18. public void insert() {
  19. Teacher tc = new Teacher(null, "熊大", "公", new Date(), "博士", "森林管理员" ,new Date(), 2);
  20. td.insert(tc);
  21. }
  22. @Test
  23. public void delete() {
  24. td.delete(10017);
  25. }
  26. @Test
  27. public void update() {
  28. Teacher tc = new Teacher(null, "熊大", "公", new Date(), "博士", "森林管理员" ,new Date(), 2);
  29. tc.setUserID(10012);
  30. td.update(tc);
  31. }
  32. @Test
  33. public void select() {
  34. td.select(1001);
  35. }
  36. @Test
  37. public void selectAll() {
  38. td.selectAll();
  39. }
  40. }

总结:

以上就是使用 Mybatis 实现简单增删改查了

Mybatis实现简单增删改查的更多相关文章

  1. Mybatis的简单增删改查

    刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...

  2. MyBatis之二:简单增删改查

    这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...

  3. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  4. Mybatis入门之增删改查

    Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...

  5. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

  6. MyBatis -- 对表进行增删改查(基于注解的实现)

    1.MyBatis对数据库表进行增/删/改/查 前一篇使用基于XML的方式实现对数据库的增/删/改/查 以下我们来看怎么使用注解的方式实现对数据库表的增/删/改/查 1.1  首先须要定义映射sql的 ...

  7. Spring Boot 使用Mybatis注解开发增删改查

    使用逆向工程是遇到的错误 错误描述 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): c ...

  8. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  9. idea+spring4+springmvc+mybatis+maven实现简单增删改查CRUD

    在学习spring4+springmvc+mybatis的ssm框架,idea整合简单实现增删改查功能,在这里记录一下. 原文在这里:https://my.oschina.net/finchxu/bl ...

随机推荐

  1. Lua中如何实现类似gdb的断点调试—06断点行号检查与自动修正

    前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性. 我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行.我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功 ...

  2. Java使用Geotools读取shape矢量数据

    作为GIS开发者而言,矢量数据是我们经常要用到的,而shape数据是矢量数据中最常用的格式,因此解析shape数据也是作为GIS软件开发人员必备的基础技能,而GeoTools无疑是Java最好用来处理 ...

  3. tp5三级联动的实现

    tp5三级联动的实现 首先注意这里 如果说一级菜单不选中的话 后边的二级菜单是没有数据的 这里就要用到三级联动 第一步:先把一级菜单的数据查询展示出来 所以 pid 默认等于 0 代码实例: publ ...

  4. LGP2233题解

    题目大意 求环上走 \(n\) 步从指定点到达另一指定点,到达指定点后 不得继续移动. 大家都做过P1057传球游戏吧?还记得这道题的思路吗? 设 \(dp[i][j]\) 表示传 \(i\) 次求传 ...

  5. 【ASP.NET Core】MVC 控制器的模型绑定(宏观篇)

    欢迎来到老周的水文演播中心. 咱们都知道,MVC的控制器也可以用来实现 Web API 的(它们原本就是一个玩意儿),区别嘛也就是一个有 View 而另一个没有 View.于是,在依赖注入的服务容器中 ...

  6. git同步代码到另一分支

    将dev分支的代码同步到master 方法一:用git命令 1.git checkout master 2.git merge dev 3.git push --set-upstream origin ...

  7. Debian11系统安装

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 1. 启动镜像 启动镜像,进入安装界面,默认选择第一个图形化安装界面,回车 2. 选择语言 这里选择English语言,然后点击Continue ...

  8. Linux三剑客命令使用(持续更新)

    (本文档内容部分来源于网络) awk删除文件第一列 1.采用awk awk '{$1="";print $0}' file 2.采用sed sed -e 's/[^]* //' f ...

  9. 4月17日 python学习总结 反射、object内置方法、元类

    一.反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class People: country="China" def ...

  10. Git-rebase使用原理

    使用 Git 已经好几年了,却始终只是熟悉一些常用的操作.对于 Git Rebase 却很少用到,直到这一次,不得不用. 一.起因 上线构建的过程中扫了一眼代码变更,突然发现,commit 提交竟然多 ...