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 实现简单增删改查了
Mybatis实现简单增删改查的更多相关文章
- Mybatis的简单增删改查
刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...
- MyBatis之二:简单增删改查
这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
- Mybatis入门之增删改查
Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...
- Redis:五种数据类型的简单增删改查
Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...
- MyBatis -- 对表进行增删改查(基于注解的实现)
1.MyBatis对数据库表进行增/删/改/查 前一篇使用基于XML的方式实现对数据库的增/删/改/查 以下我们来看怎么使用注解的方式实现对数据库表的增/删/改/查 1.1 首先须要定义映射sql的 ...
- Spring Boot 使用Mybatis注解开发增删改查
使用逆向工程是遇到的错误 错误描述 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): c ...
- 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- idea+spring4+springmvc+mybatis+maven实现简单增删改查CRUD
在学习spring4+springmvc+mybatis的ssm框架,idea整合简单实现增删改查功能,在这里记录一下. 原文在这里:https://my.oschina.net/finchxu/bl ...
随机推荐
- Linux命令,附带意思
1.ls:命令是列出目录内容 2.lsblk:就是列出块设备3.md5sum:就是计算和检验MD5信息签名.4.dd:命令代表了转换和复制文件5.uname显示内核类别, uname -a显示详细信息 ...
- mysql保存emoji表情,utf8mb4保存不了表情的问题
报错信息 : Incorrect string value: '\xF0\x9F\x99\x85\xE2\x80...' for column 'content' at row 1 mysql数据库的 ...
- 使用数据库、Redis、ZK分别实现分布式锁!
分布式锁三种实现方式: 基于数据库实现分布式锁: 基于缓存(Redis等)实现分布式锁: 基于Zookeeper实现分布式锁: 基于数据库实现分布式锁 悲观锁 利用select - where - f ...
- 【混合编程】C/C++调用Fortran的DLL
[混合编程]C/C++调用Fortran的DLL 以一个简单的加法器为例,介绍C/C++调用Fortran语言DLL的操作过程 一.Fortran操作 1.1 Fortran代码 首先是加法功能的实现 ...
- ADT环境搭建手册
前言 笔者在搭建ADT环境之前一脸懵逼,甚至不知道ADT是什么,更别说与之相关的SDK.eclipse等,相信很多小伙伴跟我一样也是一脸茫然,所以在搭建环境之前有必要先了解一下它们是什么,有什么样的关 ...
- Win10开启FTP与配置(完整无错版)
#1.控制面板>程序>启用或关闭Windows功能>-(控制面板可在 桌面右键>个性化>主题>桌面图标设置>勾选控制面板>确定) #2.小娜搜索IIS打 ...
- python练习册 每天一个小程序 第0000题
PIL库学习链接:http://blog.csdn.net/column/details/pythonpil.html?&page=1 1 #-*-coding:utf-8-*- 2 __au ...
- 22.2.14session和反反爬处理
22.2.14 session和反反爬处理 1.session: requests库包含session,都是用来对一个url发送请求,区别在于session是一连串的请求,在session请求过程中c ...
- iOS全埋点解决方案-应用退出和启动
前言 通过应用程序退出事件,可以分析应用程序的平均使用时长:通过应用程序的启动事件,可以分析日活和新增.我们可以通过全埋点方式 SDK 实现应用程序的退出和启动事件. 一.全埋点的简介 目前. ...
- mysql innodb事务的ACID及其实现的保证机制
MySQL事务的ACID,一致性是最终目的.保证一致性的措施有:A原子性:靠undo log来保证(异常或执行失败后进行回滚).D持久性:靠redo log来保证(保证当MySQL宕机或停电后,可以通 ...