MyBatis实例——学生成绩管理(Maven重构)

本文介绍了如何使用Maven重构一个学生成绩管理系统,包括Maven的基本概念、环境搭建、项目创建、jar包管理、配置文件、实体类、映射文件的添加,以及单元测试的执行。详细步骤从数据库创建到各个功能模块的实现,旨在展示Maven在实际开发中的应用。
摘要由CSDN通过智能技术生成

0、Maven简单介绍

Maven是一个自动化构建工具,其主要的作用之一是帮助开发人员管理jar包。接下来通过图文教程演示maven的使用。
Maven—菜鸟教程

1、Maven是项目对象模型(POM),是一个自动化构建工具。一个项目的构建过程如下编译、测试、打包、部署、安装。而且这个构建过程是自动化的。
2、Maven主要的作用管理jar包
3、Jar包可以到中央工厂去下载

0.1、搭建maven开发环境

Eclipse开发工具中已经内置了maven插件。在Eclipse中找到maven插件的方法如下:
在这里插入图片描述
在这里插入图片描述

0.2、Maven仓库中的jar包从哪里来

maven项目中,开发人员导入jar包时,会自动从maven的仓库中获取jar包,如果maven仓库中没有所需要的jar包,那么maven就会自动到网上下载jar包,然后将下载的jar放到仓库中,再提供给我们的项目。
在这里插入图片描述

使用maven重构“学生成绩管理”(eduSystem)项目.
执行步骤:
1、准备工作:
(1)、创建数据库;
2、搭建开发环境:
(1)、创建maven项目;
(2)、导入jar包(向pow.xml文件中添加jar包);
3、业务开发:
(1)、添加配置文件(在src/main/resource中添加);
(2)、添加实体类(在src/main/java创建包,在包中创建实体类);
(3)、添加映射文件(在 src/main/resource中添加);
4、测试
(1)、创建测试类(在src/main/test创建测试包,在包中创建测试类)。

一、准备工作

创建数据库

① 使用mysql数据库;
② 创建数据库edusystem;
③ 创建数据表score;
④ 初始化数据
#创建数据库
CREATE DATABASE edusystem;
#使用该数据库
USE edusystem;
#创建数据库表
CREATE TABLE score (
	id INT AUTO_INCREMENT PRIMARY KEY,
	stuno VARCHAR (5),
	score INT
);
#向数据库表中插入数据
INSERT INTO score (stuno, score)
VALUES
	('12301', 65);

INSERT INTO score (stuno, score)
VALUES
	('12302', 75);
#查看数据库中的数据
SELECT
	*
FROM
	score

二、搭建开发环境

2.1、创建Maven项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目创建完成。

2.2、导入jar包

Maven项目中是通过GAV来描述项目对jar的依赖的

GroupId:   公司
artifactId:项目
Version:   版本

提供GAV的网站有很多,最重要的是Maven中央工厂

导入MyBatis包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,MyBatis包就算是导入完成,按照如上操作接下来将MySql和JUnit包导入。

MySql
在这里插入图片描述
JUnit
在这里插入图片描述
三个jar包都导入到pom.xml文件中如下图所示:
在这里插入图片描述

三、业务开发

3.1、添加配置文件

MyBatis配置文件在maven项目中需要放到resources目录下
在这里插入图片描述
MyBatis配置文件的内容是MyBatis官网中“入门”一栏中获取。

sqlconfig.xml

<?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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/edusystem?characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper/Score.xml"/>
  </mappers>
</configuration>

3.2、添加实体类

maven项目中,java类放在src/main/java目录下
在这里插入图片描述
Score.java

package cn.edu.model;

public class Score {
	private int id;
	private String stuno;
	private int score;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getStuno() {
		return stuno;
	}
	public void setStuno(String stuno) {
		this.stuno = stuno;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
}

导入getset方法的快捷键:Shift + Alt + S

3.3、添加映射文件

src/main/resources/创建专门用于管理映射文件的目录,命名为mapper,在mapper目录下创建映射文件Score.xml

注意映射文件的名称要与所对应实体类的名称要一致
在这里插入图片描述
映射文件的内容是MyBatis官网中“入门”一栏中获取。

Score.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="score">
  <!--查找语句-->
  <select id="selectByOne" parameterType="string" resultType="cn.edu.model.Score">
    select * from score where stuno = #{stuno}
  </select>

 <!--插入语句
insert语句中的parameterType属性是需要插入值的提供对象,这个不需要传数据的类型-->
	<insert id="insert" parameterType="cn.edu.model.Score"> 
	INSERT INTO score(stuno,score)VALUES (#{stuno},#{score})
	</insert>
<!--删除语句-->
	<delete id="delete" parameterType="string">
	DELETE FROM score WHERE stuno=#{stuno};
	</delete>
<!--更新语句-->
	<update id="update" parameterType="cn.edu.model.Score">
	UPDATE score SET score = #{score} WHERE stuno = #{stuno}
	</update>
</mapper>

注意:映射文件最终要在配置文件中配置。
在这里插入图片描述

四、单元测试

src/test/java中创建包cn.edu.test,在改包中创建测试类Tests,如下:
在这里插入图片描述
Tests.java

package cn.edu.test;

import java.io.IOException;
import java.io.InputStream;

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 org.junit.Test;

import cn.edu.model.Score;

public class Tests {

	public static void main(String[] args) throws IOException {
		String file = "sqlconfig.xml";
		InputStream stream = Resources.getResourceAsStream(file);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
		SqlSession session = factory.openSession();
		
		Score score = session.selectOne("score.selectByOne", "12301");
		System.out.println("学号:"+score.getStuno()+"\n成绩:"+score.getScore());

	}

	// 使用junit完成单元测试(推荐使用)
		@Test
		public void findByNo() throws IOException {
			String file = "sqlconfig.xml";
			InputStream stream = Resources.getResourceAsStream(file);
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
			SqlSession session = factory.openSession();
			Score score = session.selectOne("score.selectByOne", "66666");
			System.out.println("学生的学号:"+score.getStuno() + "\n学生的成绩:" + score.getScore());
		}
		//插入测试
		@Test
		public void testInster() throws IOException {
			String file = "sqlconfig.xml";
			InputStream stream = Resources.getResourceAsStream(file);
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
			SqlSession session = factory.openSession();
			// 添加成绩
			Score score = new Score();
			score.setStuno("77777");
			score.setScore(80);
			// mybatis在执行insert,update,delete操作时,会自动开启事务
			session.insert("score.insert", score);
			// mybatis没有自动提交事务
			session.commit(); // 提交事务,此时表示所有的SQL语句都成功执行了
			// session.rollback();//事务回滚,此时表示所有的sql语句都恢复到执行前的状态
			session.close();
			System.out.println("插入成功!");
		}
		//删除测试
		@Test
		public void testDelete() throws IOException {
			String file = "sqlconfig.xml";
			InputStream stream = Resources.getResourceAsStream(file);
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
			SqlSession session = factory.openSession();
			//删除成绩
			Score score = new Score();
			score.setStuno("77777");
			session.delete("score.delete", score);
			session.commit();
			System.out.println("删除成功!");
		}
		//更新测试
		@Test
		public void testUpdate() throws IOException {
			String file = "sqlconfig.xml";
			InputStream stream = Resources.getResourceAsStream(file);
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
			SqlSession session = factory.openSession();
			//更新成绩
			Score score = new Score();
			score.setStuno("66666");
			score.setScore(98);
			// mybatis在执行insert,update,delete操作时,会自动开启事务
			session.update("score.update", score);
			// mybatis没有自动提交事务
			session.commit(); // 提交事务,此时表示所有的SQL语句都成功执行了
			// session.rollback();//事务回滚,此时表示所有的sql语句都恢复到执行前的状态
			session.close();
			System.out.println("更新成功!");
		}
}

注意:测试类的名称最好不要设置为Test,因为这样在进行JUnit测试(@Test)时会产生冲突。

五、结果展示

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值