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)建表后结果如下图:

 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
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties"/>
    
    <typeAliases>
        <package name="com.yy.homework.domain"/>
    </typeAliases>

    <environments default="dev">
        <environment id="dev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${db.driverClassName}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.username}"/>
                <property name="password" value="${db.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/yy/homework/mapper/TeacherMapper.xml"/>
    </mappers>
</configuration>
  • 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 {
	// 增加
    void insert(Teacher t);
	// 删除
    void delete(int id);
	// 更新
    void update(Teacher t);
	// 根据id查询一个教师信息
    Teacher select(int id);
	// 查询所有教师信息
    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 {
    SqlSession sqlSession = null;

    @Override
    public void insert(Teacher t) {
        try {
            sqlSession = MybatisUtil.getInstance().openSession();
            sqlSession.insert("com.yy.homework.mapper.TeacherMapper.insert", t);
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }
    }

    @Override
    public void delete(int id) {
        try {
            sqlSession = MybatisUtil.getInstance().openSession();
            sqlSession.delete("com.yy.homework.mapper.TeacherMapper.delete", id);
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }
    }

    @Override
    public void update(Teacher t) {
        try {
            sqlSession = MybatisUtil.getInstance().openSession();
            sqlSession.update("com.yy.homework.mapper.TeacherMapper.update", t);
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }

    }

    @Override
    public Teacher select(int id) {
        Teacher teacher = null;
        try {
            sqlSession = MybatisUtil.getInstance().openSession();
            teacher = sqlSession.selectOne("com.yy.homework.mapper.TeacherMapper.select", id);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }
        return teacher;
    }

    @Override
    public List<Teacher> selectAll() {
        List<Teacher> list = new ArrayList<>();
        try {
            sqlSession = MybatisUtil.getInstance().openSession();
            list = sqlSession.selectList("com.yy.homework.mapper.TeacherMapper.selectAll");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }
        return list;
    }
}

  • 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 {
    private Integer userID;
    private String userName;
    private String sex;
    private Date birthYear;
    private String degree;
    private String title;
    private Date grade;
    private Integer collegeID;

    public Teacher() {
    }
    public Teacher(Integer userID, String userName, String sex, Date birthYear, String degree, String title, Date grade, Integer collegeID) {
        this.userID = userID;
        this.userName = userName;
        this.sex = sex;
        this.birthYear = birthYear;
        this.degree = degree;
        this.title = title;
        this.grade = grade;
        this.collegeID = collegeID;
    }
    @Override
    public String toString() {
        return "Teacher{" +
                "userID=" + userID +
                ", userName='" + userName + '\'' +
                ", sex='" + sex + '\'' +
                ", birthYear=" + birthYear +
                ", degree='" + degree + '\'' +
                ", title='" + title + '\'' +
                ", grade=" + grade +
                ", collegeID=" + collegeID +
                '}';
    }
    public Integer getUserID() {
        return userID;
    }
    public void setUserID(Integer userID) {
        this.userID = userID;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Date getBirthYear() {
        return birthYear;
    }
    public void setBirthYear(Date birthYear) {
        this.birthYear = birthYear;
    }
    public String getDegree() {
        return degree;
    }
    public void setDegree(String degree) {
        this.degree = degree;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public Date getGrade() {
        return grade;
    }
    public void setGrade(Date grade) {
        this.grade = grade;
    }
    public Integer getCollegeID() {
        return collegeID;
    }
    public void setCollegeID(Integer collegeID) {
        this.collegeID = collegeID;
    }
}
  • TeacherMapper.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.yy.homework.mapper.TeacherMapper">
    <insert id="insert">
        insert into Teacher (userName, sex, birthYear,degree, title, grade, collegeID) values (#{userName},
        #{sex}, #{birthYear}, #{degree}, #{title}, #{grade}, #{collegeID})
    </insert>

    <delete id="delete">
        delete from Teacher where userID = #{userID}
    </delete>

    <update id="update">
        update Teacher set userName = #{userName}, sex = #{sex}, birthYear = #{birthYear}, degree = #{degree},
        title = #{title}, grade = #{grade}, collegeID = #{collegeID} where userID = #{userID}
    </update>

    <select id="select" resultType="Teacher">
        select * from teacher where userID = #{id}
    </select>

    <select id="selectAll" resultType="Teacher">
        select * from teacher
    </select>
</mapper>
  • 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 {
	/**
	 * 单例模式
	 */
    private MybatisUtil() {}
    private static MybatisUtil mybatisUtil = new MybatisUtil();

    public static MybatisUtil getInstance() {
        return mybatisUtil;
    }

    private static SqlSessionFactory factory = null;
    static {
        try {
       		// 获取 SqlSession 的工厂类
            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public SqlSession openSession() {
    	// 获取 SqlSession 对象
        return factory.openSession();
    }

}

  • 测试类 文件
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 {
    ITeacherDAO td = new TeacherDAOImpl();
    @Test
    public void insert() {
        Teacher tc = new Teacher(null, "熊大", "公", new Date(), "博士", "森林管理员" ,new Date(), 2);
        td.insert(tc);
    }

    @Test
    public void delete() {
        td.delete(10017);
    }

    @Test
    public void update() {
        Teacher tc = new Teacher(null, "熊大", "公", new Date(), "博士", "森林管理员" ,new Date(), 2);
        tc.setUserID(10012);
        td.update(tc);
    }

    @Test
    public void select() {
        td.select(1001);
    }

    @Test
    public void selectAll() {
        td.selectAll();
    }
}

总结:

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

posted @ 2021-04-18 16:40  Yan_Yang  阅读(53)  评论(0编辑  收藏  举报