学习内容:

需求

使用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. 学习linux(centos7)记录的笔记

    此随笔用于记录学习<linux鸟哥的私房菜>过程中1.遇到的问题及解决的过程 2.有必要记录的重要内容 3.对应书上操作的记录 开始于2021年6月18号 一个磁盘的分区通过格式化后成为一 ...

  2. 一文搞懂 SLAM 中的Extension Kalman Filter 算法编程

    作者 | Doreen 01 问题描述 预先知道事物未来的状态总是很有价值的! √ 预知台风的路线可以避免或减轻重大自然灾害的损失. √ 敌国打过来的导弹,如果能够高精度预测轨迹,就能有效拦截. √ ...

  3. jsp安全问题及其解决建议

    jsp编程语言自从推出之日起,由于它的快速.平台无关.可扩展.面向对象等特性得到了越来越广泛的应用,越来越多的厂家开发出了各种各样的支持平台如IBM 公司的WebSphere.BEA公司的WebLog ...

  4. Docker——时间配置

    一.常用时间表示 GMT(Greenwich Mean Time):格林威治时间,格林威治被定义为了\(0^o\)经线开始的地方,地球每15进度分为一个时区,共24个时区,相邻时区相差1个小时.中国位 ...

  5. 5月8日 python学习总结 mysql 建表操作

    一 .创建表的完整语法 create table 表名( 字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名3 类型[(宽度) 约束条件]); 解释: 类型:使用限制字 ...

  6. 随手用Java写的bilibili缓存视频转换器(合成分离的视频和音频)

    使用java随手写成,有需要可以自行修改. 项目使用到了fastjson,可以自行替换成其他json解析工具. 写这个的原因是因为下载到的其他工具弄出来的视频标题过长(应该取entry.json中的s ...

  7. Badger简单使用

    Badger简介 badger 是 dgraph 开源的 LSMTree 的 KV 引擎,它相比 leveldb 有 KV 分离.事务.并发合并等增强,是 go 生态中比较生产级的存储引擎了. 文档: ...

  8. 洛谷 P1020 [NOIP1999 普及组] 导弹拦截

    Coidng #include <iostream> #include <algorithm> #include <cstring> #include <ve ...

  9. Java如何使用实时流式计算处理?

    我是3y,一年CRUD经验用十年的markdown程序员‍常年被誉为职业八股文选手 最近如果拉过austin项目代码的同学,可能就会发现多了一个austin-stream模块.其实并不会意外,因为这一 ...

  10. Java 建造者Builder

    import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import java.u ...