博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三表关联查询
阅读量:3971 次
发布时间:2019-05-24

本文共 6371 字,大约阅读时间需要 21 分钟。

目录

一、创建三张表:学生表、选课表、课程表

  • 在自定义的数据库中创建三个表

1、学生表(学号, 姓名, 性别, 年龄, 电话) - 学号是字符串类型

  1. 运行SQL语句创建学生表
    在这里插入图片描述
CREATE TABLE student (  s_id int(11) NOT NULL AUTO_INCREMENT,	s_number int(11) NOT NULL,  s_name varchar(30) DEFAULT NULL,  s_gender varchar(10) DEFAULT NULL,  s_age int(11) DEFAULT NULL,  s_phone VARCHAR(11) DEFAULT NULL,  PRIMARY KEY (`s_id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
  1. 运行SQL语句给student学生表插入记录

在这里插入图片描述

INSERT INTO student VALUES ('1','19205111', '张三', '女',18,'1234569290');INSERT INTO student VALUES ('2','19205112', '李四', '女',20,'1234785890');INSERT INTO student VALUES ('3','19205113', '王五', '女',19,'1238737890');INSERT INTO student VALUES ('4','19205114', '刘艳', '女',10,'1234593690');

2、选课表(学号, 课程号, 成绩)

  1. 运行SQL语句创建学生表
    在这里插入图片描述
CREATE TABLE selecourse (  sc_id int(11) NOT NULL AUTO_INCREMENT,	sc_number int(11) NOT NULL,	sc_classnumber int(20) NOT NULL,  sc_score int(10) NOT NULL,  PRIMARY KEY (`sc_id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
  1. 运行SQL语句给student学生表插入记录
    在这里插入图片描述
INSERT INTO selecourse VALUES ('1','19205111', '123', '90');INSERT INTO student VALUES ('2','19205112','234', '89');INSERT INTO student VALUES ('3','19205113','345', '99');INSERT INTO student VALUES ('4','19205114','456', '78');

3、课程表(课程号, 课程名, 课时数) - 课程号是字符串类型

  1. 运行SQL语句创建学生表

在这里插入图片描述

CREATE TABLE timetable (  t_id int(11) NOT NULL AUTO_INCREMENT,	t_classnumber int(20) NOT NULL,	t_name VARCHAR(30) NOT NULL,  t_classhours int(10) NOT NULL,  PRIMARY KEY (`t_id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
  1. 运行SQL语句给student学生表插入记录
    在这里插入图片描述
INSERT INTO timetable VALUES ('1', '123', '心理健康教育','10');INSERT INTO student VALUES ('2','234', 'java','30');INSERT INTO student VALUES ('3','345', 'python','25');INSERT INTO student VALUES ('4','456', '前端技术','25');

二、查询任务

1、在映射器配置文件里引入结果映射元素

在这里插入图片描述

2、添加按姓名查询用户记录功能,更新,查找,删除

在这里插入图片描述

insert into t_user(name ,age,address) value (#{
name},#{
age},#{
address});
UPDATE t_user SET name =#{
name}, age=#{
age}, address =#{
address} where id=#{
id};
DELETE FROM t_user WHERE id=#{
id};

3、在UserMapper接口里增加插入、更新、删除方法

在这里插入图片描述

package net.tp.mybatis.mapper;import net.tp.mybatis.bean.User;import org.apache.ibatis.annotations.Select;import java.util.List;/** * 功能:用户映射器接口 * 作者:tp * 日期:2021年03月04日 */public interface UserMapper {
// @Select("SELECT * FROM t_user;") List
findAll(); //@Select(" SELECT * FROM t_user WHERE id = #{id}") User findById(int id); List
findByName(String name); int insert (User user); int update(User user); int deleteById(int id);}

4、在测试类TestUserMapper里添加测试方法

package net.zjs.mybatis.mapper;import net.tp.mybatis.bean.User;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.After;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.io.Reader;import java.util.List;/** * 功能:测试用户映射器接口 * 作者:zjs * 日期:2021年03月04日 */public class TestUserMapper {
private SqlSession sqlSession; // SQL会话 private UserMapper userMapper; // 用户映射器 @Before public void init() {
try {
// 读取MyBatis配置文件作为字符输入流 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); // 基于MyBatis配置文件构建SQL会话工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); // 利用SQL会话工厂获取SQL会话 sqlSession = factory.openSession(); // 利用SQL会话获取用户映射器对象 userMapper = sqlSession.getMapper(UserMapper.class); // 提示用户SQL会话对象创建成功 System.out.println("sqlSession对象已创建。"); } catch (IOException e) {
e.printStackTrace(); } } @Test public void testFindById() {
int id = 1; User user = userMapper.findById(id); if (user != null) {
System.out.println(user); } else {
System.out.println("编号为[" + id + "]的用户未找到。"); } } @Test public void testFindAll() {
List
users = userMapper.findAll(); users.forEach(user -> System.out.println(user)); } @Test public void testFindName(){
String name= "王"; List
users =userMapper.findByName(name); if (users.size() >0){
users.forEach(user -> System.out.println(user)); }else {
System.out.println("没有找到姓名为:["+name+"]的记录!"); } } @Test public void testInsert(){
User user =new User(); user.setName("王雨涵"); user.setAge(30); user.setAddress("龙马潭区长桥路2号宿舍"); int count =userMapper.insert(user); sqlSession.commit();//提交数据库操作 if(count>0){
System.out.println("记录插入成功!"); System.out.println("插入的新记录:"+user); }else {
System.out.println("插入失败!"); } } @Test public void testUpdate(){
User user=userMapper.findById(4); System.out.println("更新前的记录:"+user); user.setName("萌萌"); user.setAge(18); user.setAddress("北京市朝阳区北苑路6号楼"); int count =userMapper.update(user); sqlSession.commit();//提交数据库操作 if(count>0){
System.out.println("记录更新成功!"); System.out.println("更新后的记录:"+user); }else {
System.out.println("更新失败!"); } } @Test public void testDeleteById(){
int id = 4; User user =userMapper.findById(id); System.out.println("待删除的记录:"+user); userMapper.deleteById(id); sqlSession.commit();//提交数据库操作 System.out.println("编号为["+id+"]的记录删除成功!"); user=userMapper.findById(id); if (user != null) {
System.out.println(user); } else {
System.out.println("编号为[" + id + "]的用户未找到。"); } } @After public void destroy() {
// 关闭SQL会话 sqlSession.close(); // 提示用户SQL会话对象关闭 System.out.println("sqlSession对象已关闭。"); }}

转载地址:http://qjtki.baihongyu.com/

你可能感兴趣的文章
C语言中整型
查看>>
C语言中整型
查看>>
C语言详解 - 枚举类型
查看>>
禁止所有的中断(关中断/开中断)
查看>>
禁止所有的中断(关中断/开中断)
查看>>
S3C2410:DMA介紹(精)
查看>>
S3C2410:DMA介紹(精)
查看>>
S3C2410 Linux IIS音频设备驱动分…
查看>>
S3C2410 Linux IIS音频设备驱动分…
查看>>
s3c2410的dma操作的一般步骤
查看>>
s3c2410的dma操作的一般步骤
查看>>
s3c2440 spi驱动DMA模式
查看>>
s3c2440 spi驱动DMA模式
查看>>
编写的dm9000ep驱动(2.6.13)
查看>>
编写的dm9000ep驱动(2.6.13)
查看>>
DM9000 驱动移植及源码简析
查看>>
DM9000 驱动移植及源码简析
查看>>
创建字符设备的三种方法 (转载)
查看>>
Linux下ARM汇编教程
查看>>
Linux下ARM汇编教程
查看>>