学习内容:

需求

使用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 实现简单增删改查了

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. 论文翻译:2020_DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement

    论文地址:DCCRN:用于相位感知语音增强的深度复杂卷积循环网络 论文代码:https://paperswithcode.com/paper/dccrn-deep-complex-convolutio ...

  2. .NET的两种部署模式,了解一下

    前言 以往部署程序一直是习惯性先安装运行时环境,然后再将发布打包好的程序运行起来:但当多个程序依赖不同版本框架平台时,如果部署在同一台机器上,那就需要在同一台机器上安装多个版本的运行时,总感觉有点不太 ...

  3. [csi]浅聊ceph-csi组件

    描述   ceph-csi扩展各种存储类型的卷的管理能力,实现第三方存储ceph的各种操作能力与k8s存储系统的结合.调用第三方存储ceph的接口或命令,从而提供ceph数据卷的创建/删除.挂载/解除 ...

  4. 1.java连接pulsar服务

    目录 是什么 安装 Java客户端 1.引入GAV 2.创建配置项 3.验证测试 其他及代码下载 是什么 Pulsar 是一个用于服务器到服务器的消息系统,具有多租户.高性能等优势.详见 安装 本文主 ...

  5. GateWay配置使用

    是什么 Cloud全家桶中有个很重要的组建就是网关,在1.x版本中都是采用的Zuul网关 但在2.X版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关替代Zuul Sprin ...

  6. Kendo UI Grid 使用总结

    Kendo UI Grid控件的功能强大,这里将常用的一些功能总结一下. Kendo UI Grid 固定列 在使用Gird控件显示数据时,如果数据列过多,会出现横向滚动条,很多情况下,我们希望某些列 ...

  7. Dcate Admin 的使用

    1:laravel安装框架 composer create-project --prefer-dist laravel/laravel 项目名称 2:配置数据库 DB_CONNECTION=mysql ...

  8. thinkphp 框架自带搜索+分页+搜索标红

    ..........控制器方法 public function index() { //接受搜索关键字 $word=input('word'); $where=[]; if (!empty($word ...

  9. async-validator 源码学习(一):文档翻译

    async-validator 是一个表单异步校验库,阿里旗下的 Ant-design 和 Element 组件库中的表单验证使用的都是 async-validator ,目前版本已更新到 4.0.7 ...

  10. (leetcode)二叉树的层次遍历-c语言实现

    这段代码,在后面跑测试用例时,出现了stack-overflow,但是原因还不清楚. 问题如下:  二叉树的层次遍历   给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点) ...