LEEYANGY

LEEYANGY 关注TA

拼搏百天,我要上湖工大!

LEEYANGY

LEEYANGY

关注TA

拼搏百天,我要上湖工大!

  •  Wuhan/HuBei
  • 学生
  • 写了322,476字

该文章投稿至Nemo社区   Java  板块 复制链接


初学Mybatis

发布于 2021/07/03 19:47 16,238浏览 0回复 6,616

在学习完Java se之后,我学习了一点点JDBC技术,很简单的那种增删改数据,后来听到了mybatis,就干脆硬着头皮学吧。

啃官方文档,看不懂就Google,CSDN,过程中遇到的错误也是网上搜出来解决的,感谢互联网!

-----------------------华丽的分割线-------------------------------

进入正题(分割线及其的多。。。。。0

首先需要了解一下maven

那么什么是maven?

maven工程对jar包管理过程

maven规范化流程如下:

清理--编译--测试--报告--打包--部署

maven目录结构:

cd 到自己的maven目录输入 tree 查看

maven配置环境变量(Windows为例):

由于maven依赖Java,所以在使用maven时候必须先配好Java环境!!!

MAVEN_HOME  maven所在目录

path %MAVEN_HOME%\bin
-----------------------华丽的分割线-------------------------------
配置文件/结构:
src/main/java目录 核心代码部分
src/main/resources 配置文件部分
src/test/java目录 测试代码部分
src/test/resources 测试配置文件
src/main/webapp 页面资源,js,css,图片等
------------------------------------------------------------------------------------
maven常用命令:
mvn clean //清理target
mvn compile //编译src/main/java里的代码
mvn package //打包命令,如需war包,修改por.xml文件即可
mvn install //
------------------------------------------------------------------------------------
maven生命周期
编译
complie
测试
test
打包
package
安装
install
发布
deploy

-----------------------华丽的分割线-------------------------------

创建maven工程 以Idea为例:

没图了,,,下次在上传
-----------------------华丽的分割线-------------------------------
构建mybatis工程也和maven差不多,参上
-----------------------华丽的分割线-------------------------------
-----------------------华丽的分割线-------------------------------
这个过程中我学到了什么?
数据查询,和对MySQL新的认识
-----------------------华丽的分割线-------------------------------
配置mybatis
sql代码 对应mybatis01
use `mybatis`;

CREATE TABLE `user`(
id int not NULL PRIMARY KEY,
`name` VARCHAR(20) DEFAULT NULL,
pwd VARCHAR(30) DEFAULT NULL


)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT into `user` (id,name,pwd) VALUES
(1,'张三','123456'),
(2,'李四','123456'),
(3,'王五','123456')

核心配置文件

<?xml version="1.0" encoding="utf8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
<!--配置环境-->
<environments default="mysql">
<!-- 配置mysql环境-->
<environment id="mysql">
<!-- 配置事务类型-->
<transactionManager type="JDBC"/>
<!-- 配置数据源(数据池)-->
<dataSource type="POOLED">
<!-- 配置连接数据的4个基本信息-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123321"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置-->
<mappers>
<!-- 在resource下做映射-->
<mapper resource="com/leeyangy/dao/UserMapper.xml"/>
</mappers>
</configuration>

--------------------------------做事去了,下次再继续写-------------------------------------------------

赋个地址,平时写的都在gayhub上 commit随缘写,勿喷!!
---------国庆小作业---------
-- sql语句

-- sql分析
-- 管理员账户只能由数据库管理员赋予
-- 学生和班级
-- 一个班有多个学生
-- 一个课可以被多个学生选

-- 删表
DROP TABLE
IF
EXISTS t_student_subject;
-- 分割---
DROP TABLE
IF
EXISTS t_student;
-- 分割---
DROP TABLE
IF
EXISTS t_grade;
-- 分割---
DROP TABLE
IF
EXISTS t_subject;
-- 分割---


-- 班级表
CREATE TABLE t_grade (
gid int NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT'班级id',
gname VARCHAR(200) unique
);

-- 学生信息表
CREATE TABLE t_student (
sid int PRIMARY KEY NOT NUll AUTO_INCREMENT COMMENT '学生学号',
sname VARCHAR(200) NOT NUll COMMENT '学生姓名',
stel VARCHAR(20) NOT NULL COMMENT '学生手机号',
sgid int NOT NULL COMMENT '学生班级',-- 外键对应的主键id
isadmin int DEFAULT 0 COMMENT '管理员1是0否',
CONSTRAINT stu_grade_fk0 FOREIGN KEY(sgid) REFERENCES t_grade (gid) ON UPDATE CASCADE ON DELETE CASCADE
);

-- 课程表
CREATE TABLE t_subject (
subid int PRIMARY KEY NOT NUll KEY AUTO_INCREMENT COMMENT '课程id',
subname VARCHAR(200) COMMENT '课程名称' unique
);

-- 中间表
CREATE TABLE t_student_subject (
ssid INT AUTO_INCREMENT PRIMARY KEY,
sid int COMMENT '学生id',
subid int COMMENT '课程id',
CONSTRAINT t_student_subject_sid_fk0 FOREIGN KEY(sid) REFERENCES t_student(sid) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT t_student_subject_subid_fk0 FOREIGN KEY(subid) REFERENCES t_subject(subid) ON UPDATE CASCADE ON DELETE CASCADE
);

-- 插入班级信息
INSERT into t_grade (gname) VALUES ('一班'),('二班'),('三班'),('四班');
-- 插入学生信息
INSERT INTO t_student (sname,stel,sgid) VALUES ("李一","10010",1),("李二","10010",2),("李三","10010",3),("李四","10010",4),("李洋洋","10010",1),("杨逵","10010",1)
,("吴境","10010",2),("叶轩","10010",2),("杨逵","12310",2);
-- 插入课程信息
INSERT INTO t_subject (subname) VALUES ("ssm框架开发技术"),("操作系统"),("Mysql"),("数据结构"),("计算机网络");
-- 中间表
INSERT INTO t_student_subject (sid,subid) VALUES (1,2),(2,1),(3,3),(4,1),(1,1),(1,3),(2,5),(3,1),(4,2),(1,4),(1,5),(5,1);

-- 功能语句测试
-- admin
-- 1. 查询指定班级下所有学生信息,(一对多)
SELECT
*
FROM
t_grade g,
t_student s
WHERE
s.sgid = 1
AND s.sgid = g.gid;
-- 2. 删除指定班级,以及该班级下所有学生(两个单表操作)
DELETE
FROM
t_grade
WHERE
gid = 1;
-- 3. 查询学习了指定课程下的所有学生信息(多对多)
SELECT
sub.* ,stu.*
FROM
t_subject sub,
t_student_subject ss,
t_student stu
WHERE
stu.sid = ss.sid
AND ss.subid = sub.subid
AND sub.subname = "ssm框架开发技术";
-- 4. 删除指定课程,但是不删除学生信息 (单表)
DELETE from t_subject WHERE t_subject.subname="ssm框架开发技术";
-- 5. 添加班级
INSERT INTO t_grade (gname) VALUES ("五班");
-- 6. 添加课程
INSERT INTO t_subject (subname) VALUES ("python爬虫");
-- 7. 在指定班级下添加学生
INSERT INTO t_student (sname,stel,sgid) VALUES ("李洋洋","12345",1);
-- 8. 删除指定学生
DELETE from t_student WHERE t_student.sname="李洋洋";
-- 9. 修改指定学生信息
UPDATE t_student set stel="11111",sgid=2 WHERE sname="李洋洋";

-- ()


-- 学生功能
-- 1. 查询该学生所在班级信息
SELECT
g.* ,s.*
FROM
t_grade g, t_student s
WHERE
s.sname="李洋洋" and s.sgid=g.gid;
-- 2. 查询该学生自己的所有学生信息
SELECT * FROM t_student s WHERE s.sname="李洋洋";
-- 3. 查询该学生选择学习的课程
SELECT * from t_student stu, t_subject sub,t_stu_subject WHERE stu
-- 4. 修改该学生的个人信息
UPDATE t_student s set stel="11111" WHERE s.sname="李洋洋" and s.sid=5;


sql模型


程序大致功能


代码又臭又长,不在此展示,移步GitHub

整体设计思路:

更新数据,删除数据   在做操作前先对数据库中查一次,看数据是否存在,如果允许更新和删除;反之。


管理员和学生暂时作为一体,在表中加一个字段判断,对查出来的数据进行简单校验,满足条件即为管理员,反之普通学生用户。


点赞(0)
点了个评