学习内容:

需求

使用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. MAC VMware配置Kali linux

    一.部署kali虚拟机 1.选择vmaware fusion12,放弃parallels,因为我用的是MAC系统,所以提供的是VMware的mac版本 2.VMware fusion12邀请码: ZF ...

  2. [BOI2019][第K大问题][暴力剪枝]D2T1 Olympiads

    目录 题意 输入格式 输出格式 样例 Input Output 数据范围 时间限制 思路 代码 题意 有\(N\)个人,现在你要从中选出\(K\)个人出来,然后让这\(K\)个人一起参加\(K\)场比 ...

  3. kubernetes集群节点多网卡,calico指定网卡

    kubernetes集群节点多网卡,calico指定网卡 1.calico如果有节点是多网卡,所以需要在配置文件中指定内网网卡 spec: containers: - env: - name: DAT ...

  4. python中字符串与列表之间的相互转换

    1.字符串>列表:split() a = 'my first python' b = a.split(" ") print(b)输出: 2.列表>字符串:join() ...

  5. CodeUp Problem D: More is better

    根据题目意思,输入的每一对A.B都是直接朋友,并且最后只会得到一个集合,该集合就是Mr Wang选择的男孩. 因此很容易写出代码,甚至不需要自己构建一个并查集,只需要使用C++的set模板,每次读入一 ...

  6. springcloud学习00-开发工具相关准备

    用maven构建springcloud项目,目录结构(图片来源:https://blog.csdn.net/qq_36688143/article/details/82755492) 1.maven ...

  7. 提升组件库通用能力 - NutUI 在线主题定制功能探索

    开发背景 NutUI 作为京东风格的组件库,已具备 H5 和多端小程序开发能力.随着业务的不断发展,组件库的应用场景越来越广.在公司内外面临诸如科技.金融.物流等各多个大型团队使用时,单一的京东 AP ...

  8. VS Code通过code runner插件编译运行多个cpp文件 | 链接编译.h文件

    1.多个cpp文件在同一级目录 参考:https://jingyan.baidu.com/article/2f9b480d7ceb3d01ca6cc224.html 此时可通过修改Code Runne ...

  9. BUAA 2021-2022毛概复习资料

    2021-2022年毛概期末主观题复习范围,参考2022版教材和课程组官方PPT,原文太过敏感,所以贴出代码大家自己run #include <stdio.h> unsigned arti ...

  10. 教你识别一些sequence的相关问题

    摘要:通过一些自定义的视图或者查询语句,批量识别集群的sequence相关问题 本文分享自华为云社区<GaussDB(DWS)运维 -- sequence常见运维操作>,作者: 譡里个檔. ...