Mybatis实现简单增删改查

朱雀 2023-01-13 10:44 324阅读 0赞

Mybatis的简单应用

  • 学习内容:
    • 需求
    • 环境准备
    • 代码
  • 总结:

学习内容:

需求

使用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)建表语句如下:

    DROP TABLE IF EXISTS teacher;
    CREATE TABLE teacher (
    userID int(11) NOT NULL AUTO_INCREMENT,
    userName varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT ‘用户名’,
    sex varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT ‘性别’,
    birthYear date NOT NULL COMMENT ‘生日’,
    degree varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT ‘学历’,
    title varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT ‘职称’,
    grade date NULL DEFAULT NULL COMMENT ‘入职时间’,
    collegeID int(11) NOT NULL COMMENT ‘院系’,
    PRIMARY KEY (userID) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 10012 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;

 2)建表后结果如下图:
3aa3d2090bb6b329fa23897922c8ec47.png

 3)项目的目录结构如下(非Maven项目):
在这里插入图片描述

代码

  • db.properties文件

    db.driverClassName=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/web_test02?characterEncoding=utf-8&serverTimezone=GMT%2b8:00&useSSL=false

    (这里是我的数据库名,你要用你的)

    db.username=root

    (这里是我的数据库密码,你要用你的)

    db.password=admin

  • log4j.properties 文件

    Global logging configuration

    log4j.rootLogger=ERROR, stdout

    MyBatis logging configuration…

    log4j.logger.com.yy.homework.mapper=TRACE

    Console output…

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

  • mybatis-config 文件

    <?xml version=”1.0” encoding=”UTF-8” ?>
    <!DOCTYPE configuration

    1. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    2. "http://mybatis.org/dtd/mybatis-3-config.dtd">






















  • ITeacherDAO 文件

    package com.yy.homework.dao;

    import com.yy.homework.domain.Teacher;

    import java.util.List;

    / @program: Mybatis_test03 @ClassName ITeacher @description:定义实现 CRUD 的接口 @author: YanYang * @create: 2021-04-17 22:10 /
    public interface ITeacherDAO {

    1. // 增加
    2. void insert(Teacher t);
    3. // 删除
    4. void delete(int id);
    5. // 更新
    6. void update(Teacher t);
    7. // 根据id查询一个教师信息
    8. Teacher select(int id);
    9. // 查询所有教师信息
    10. List<Teacher> selectAll();

    }

  • TeacherDAOImpl 文件

    package com.yy.homework.dao.impl;

    import com.yy.homework.dao.ITeacherDAO;
    import com.yy.homework.domain.Teacher;
    import com.yy.homework.util.MybatisUtil;
    import org.apache.ibatis.session.SqlSession;

    import java.util.ArrayList;
    import java.util.List;

    / @program: Mybatis_test03 @ClassName TeacherDAOImpl @description: 实现接口中的方法 @author: YanYang * @create: 2021-04-17 22:19 /
    public class TeacherDAOImpl implements ITeacherDAO {

    1. SqlSession sqlSession = null;
    2. @Override
    3. public void insert(Teacher t) {
    4. try {
    5. sqlSession = MybatisUtil.getInstance().openSession();
    6. sqlSession.insert("com.yy.homework.mapper.TeacherMapper.insert", t);
    7. sqlSession.commit();
    8. } catch (Exception e) {
    9. e.printStackTrace();
    10. } finally {
    11. sqlSession.close();
    12. }
    13. }
    14. @Override
    15. public void delete(int id) {
    16. try {
    17. sqlSession = MybatisUtil.getInstance().openSession();
    18. sqlSession.delete("com.yy.homework.mapper.TeacherMapper.delete", id);
    19. sqlSession.commit();
    20. } catch (Exception e) {
    21. e.printStackTrace();
    22. } finally {
    23. sqlSession.close();
    24. }
    25. }
    26. @Override
    27. public void update(Teacher t) {
    28. try {
    29. sqlSession = MybatisUtil.getInstance().openSession();
    30. sqlSession.update("com.yy.homework.mapper.TeacherMapper.update", t);
    31. sqlSession.commit();
    32. } catch (Exception e) {
    33. e.printStackTrace();
    34. } finally {
    35. sqlSession.close();
    36. }
    37. }
    38. @Override
    39. public Teacher select(int id) {
    40. Teacher teacher = null;
    41. try {
    42. sqlSession = MybatisUtil.getInstance().openSession();
    43. teacher = sqlSession.selectOne("com.yy.homework.mapper.TeacherMapper.select", id);
    44. } catch (Exception e) {
    45. e.printStackTrace();
    46. } finally {
    47. sqlSession.close();
    48. }
    49. return teacher;
    50. }
    51. @Override
    52. public List<Teacher> selectAll() {
    53. List<Teacher> list = new ArrayList<>();
    54. try {
    55. sqlSession = MybatisUtil.getInstance().openSession();
    56. list = sqlSession.selectList("com.yy.homework.mapper.TeacherMapper.selectAll");
    57. } catch (Exception e) {
    58. e.printStackTrace();
    59. } finally {
    60. sqlSession.close();
    61. }
    62. return list;
    63. }

    }

  • Teacher 文件

    package com.yy.homework.domain;

    import lombok.*;

    import java.util.Date;

    / @program: Mybatis_test03 @ClassName Teacher @description: 教师JavaBean @author: YanYang * @create: 2021-04-17 22:12 /
    // @Setter @Getter @AllArgsConstructor @NoArgsConstructor @ToString
    public class Teacher {

    1. private Integer userID;
    2. private String userName;
    3. private String sex;
    4. private Date birthYear;
    5. private String degree;
    6. private String title;
    7. private Date grade;
    8. private Integer collegeID;
    9. public Teacher() {
    10. }
    11. public Teacher(Integer userID, String userName, String sex, Date birthYear, String degree, String title, Date grade, Integer collegeID) {
    12. this.userID = userID;
    13. this.userName = userName;
    14. this.sex = sex;
    15. this.birthYear = birthYear;
    16. this.degree = degree;
    17. this.title = title;
    18. this.grade = grade;
    19. this.collegeID = collegeID;
    20. }
    21. @Override
    22. public String toString() {
    23. return "Teacher{" +
    24. "userID=" + userID +
    25. ", userName='" + userName + '\'' +
    26. ", sex='" + sex + '\'' +
    27. ", birthYear=" + birthYear +
    28. ", degree='" + degree + '\'' +
    29. ", title='" + title + '\'' +
    30. ", grade=" + grade +
    31. ", collegeID=" + collegeID +
    32. '}';
    33. }
    34. public Integer getUserID() {
    35. return userID;
    36. }
    37. public void setUserID(Integer userID) {
    38. this.userID = userID;
    39. }
    40. public String getUserName() {
    41. return userName;
    42. }
    43. public void setUserName(String userName) {
    44. this.userName = userName;
    45. }
    46. public String getSex() {
    47. return sex;
    48. }
    49. public void setSex(String sex) {
    50. this.sex = sex;
    51. }
    52. public Date getBirthYear() {
    53. return birthYear;
    54. }
    55. public void setBirthYear(Date birthYear) {
    56. this.birthYear = birthYear;
    57. }
    58. public String getDegree() {
    59. return degree;
    60. }
    61. public void setDegree(String degree) {
    62. this.degree = degree;
    63. }
    64. public String getTitle() {
    65. return title;
    66. }
    67. public void setTitle(String title) {
    68. this.title = title;
    69. }
    70. public Date getGrade() {
    71. return grade;
    72. }
    73. public void setGrade(Date grade) {
    74. this.grade = grade;
    75. }
    76. public Integer getCollegeID() {
    77. return collegeID;
    78. }
    79. public void setCollegeID(Integer collegeID) {
    80. this.collegeID = collegeID;
    81. }

    }

  • TeacherMapper.xml 文件

    <?xml version=”1.0” encoding=”UTF-8” ?>
    <!DOCTYPE mapper

    1. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


    insert into Teacher (userName, sex, birthYear,degree, title, grade, collegeID) values (#{ userName},
    #{ sex}, #{ birthYear}, #{ degree}, #{ title}, #{ grade}, #{ collegeID})



    delete from Teacher where userID = #{ userID}



    update Teacher set userName = #{ userName}, sex = #{ sex}, birthYear = #{ birthYear}, degree = #{ degree},
    title = #{ title}, grade = #{ grade}, collegeID = #{ collegeID} where userID = #{ userID}





  • MybatisUtil 文件

    package com.yy.homework.util;

    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.IOException;
    import java.io.InputStream;

    / @program: Mybatis_test03 @ClassName MybatisUtil @description: 工具类 @author: YanYang * @create: 2021-04-17 22:20 /
    public class MybatisUtil {

    1. /** * 单例模式 */
    2. private MybatisUtil() { }
    3. private static MybatisUtil mybatisUtil = new MybatisUtil();
    4. public static MybatisUtil getInstance() {
    5. return mybatisUtil;
    6. }
    7. private static SqlSessionFactory factory = null;
    8. static {
    9. try {
    10. // 获取 SqlSession 的工厂类
    11. InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
    12. factory = new SqlSessionFactoryBuilder().build(in);
    13. } catch (IOException e) {
    14. e.printStackTrace();
    15. }
    16. }
    17. public SqlSession openSession() {
    18. // 获取 SqlSession 对象
    19. return factory.openSession();
    20. }

    }

  • 测试类 文件

    package com.yy.homework.dao.impl.test;

    import com.yy.homework.dao.ITeacherDAO;
    import com.yy.homework.dao.impl.TeacherDAOImpl;
    import com.yy.homework.domain.Teacher;
    import org.junit.Test;

    import java.util.Date;

    import static org.junit.Assert.*;

    / @program: Mybatis_test03 @ClassName TeacherDAOImplTest @description: @author: YanYang * @create: 2021-04-18 11:52 /
    public class TeacherDAOImplTest {

    1. ITeacherDAO td = new TeacherDAOImpl();
    2. @Test
    3. public void insert() {
    4. Teacher tc = new Teacher(null, "熊大", "公", new Date(), "博士", "森林管理员" ,new Date(), 2);
    5. td.insert(tc);
    6. }
    7. @Test
    8. public void delete() {
    9. td.delete(10017);
    10. }
    11. @Test
    12. public void update() {
    13. Teacher tc = new Teacher(null, "熊大", "公", new Date(), "博士", "森林管理员" ,new Date(), 2);
    14. tc.setUserID(10012);
    15. td.update(tc);
    16. }
    17. @Test
    18. public void select() {
    19. td.select(1001);
    20. }
    21. @Test
    22. public void selectAll() {
    23. td.selectAll();
    24. }

    }

总结:

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

发表评论

表情:
评论列表 (有 0 条评论,324人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MyBatis简单增删

    selcet 在我们之前说过的权限系统中,我们需要使用到查询功能来查询用户、角色和权限等数据。在使用纯粹的JDBC时,需要写查询语句,并且对结果集进行手动处理,将结果集映射到