基于MyBatis注解的学生管理程序

❤ (ɔˆз(ˆ⌣ˆc)“玥”——乃古上神珠也。见者好运连连,点个关注,咱们来玥方长!

(ง •̀_•́)ง加油😁😁😁

案例:

现有一个学生表s_student和一个班级表c_class,其中,班级表c_class和学生表s_student是一对多的关系。学生表s_student和班级表c_class如下:

学生表s_student

学生id

(id)

学生姓名

(name)

学生年龄

(age)

所属班级

(cid)

1张三181
2李四182
3王五192
4赵六201
班级表c_class

班级id

(id)

班级名称

(classname)

1一班
2二班

要求:

(1)根据学生表和班级表创建数据库,接着采用MyBatis注解完成查询id为2的学生的信息。

(2)利用MyBatis注解,将id为4的学生姓名改为李雷,年龄修改为21。

(3)MyBatis注解实现一对多的查询,查询出二班的所有学生信息。

目录

❤ (ɔˆз(ˆ⌣ˆc)“玥”——乃古上神珠也。见者好运连连,点个关注,咱们来玥方长!

一、前言

二、创建数据库

(一)创建一个数据库studentsystem

(二)创建学生表并插入数据

(三)创建班级表并插入数据

三、在IDEA创建Maven项目

 (一)配置环境

(二)创建实体类

1、Student实体类

2、Class班级实体类

(三)创建工具类

(四)创建接口类

1、学生接口类

2、班级、学生一对多查询接口类 

(五)创建测试方法类 

(六)运行测试

1、查询id为2的学生信息

2、 将id为4的学生姓名改为李雷,年龄修改为21

3、查询出二班的所有学生信息 

四、结语 


 

一、前言

         除了XML的映射方式,MyBatis还支持通过注解实现POJO对象和数据表之间的关联映射。使用MyBatis注解时,一般将SQL语句直接写在接口上。与XML相比,基于注解的映射方式相对简单和且不会增加系统的开销。MyBatis提供了@Select 、@Delect 、@Update、@Insert和@Param等用于增删改查,以及传递参数的常用注解。

二、创建数据库

(一)创建一个数据库studentsystem

#创建一个数据库studentsystem
create database studentsystem
use studentsystem

(二)创建学生表并插入数据

#创建一个学生表s_student
create table s_student(
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) ,
age INT,
cid INT NOT NULL
)DEFAULT CHARSET 'utf8';

#当mysql不支持插入中文数据时,需要加上代码:DEFAULT CHARSET 'utf8'
#忘记时,建完表后修改:alter table students convert to character set utf8;

#插入四条数据
INSERT INTO s_student values(1,'张三',18,1);
INSERT INTO s_student values(2,"李四",18,2);
INSERT INTO s_student values(3,"王五",19,2);
INSERT INTO s_student values(4,"赵六",20,1);

(三)创建班级表并插入数据

#创建班级表
CREATE table c_class(
id INT PRIMARY KEY AUTO_INCREMENT,
classname VARCHAR(32)
)DEFAULT CHARSET 'utf8';

#插入两条数据
INSERT INTO c_class values(1,'一班');
INSERT INTO c_class values(2,'二班');

三、在IDEA创建Maven项目

 (一)配置环境

Mybatis学习-(案例)员工管理系统(三)——创建Maven项目并测试http://t.csdn.cn/YfPWk

请参考我上面这篇文章!!!

项目架构:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2l546l5pa56ZW_,size_14,color_FFFFFF,t_70,g_se,x_16

(二)创建实体类

1、Student实体类

 //Student.java

package com.itheima.pojo;

public class Student {
    private int id;
    private String name;
    private int age;
    private int cid;
    //getter和setter方法
    public int getId(){return id;}
    public void setId(int id){this.id=id;}

    public String getName(){return name;}
    public void setName(String name){this.name=name;}

    public int getAge(){return age;}
    public void setAge(int age){this.age=age;}

    public int getCid(){return cid;}
    public void setCid(int cid){this.cid=cid;}

    @Override
    public String toString()
    {
        return "Student{id="+id+",name="+name+",age="+age+",cid="+cid+"}";
    }
}

2、Class班级实体类

 //Class.java

package com.itheima.pojo;

import java.util.List;

public class Class {
    private int id;
    private String classname;
    private List<Student> studentList;
    //getter和setter方法
    public int getId(){return id;}
    public void setId(int id){this.id=id;}

    public String getClassname(){return classname;}
    public void setClassname(String classname){this.classname=classname;}

    public List<Student> getStudentList(){return studentList;}
    public void setStudentList(List<Student> studentList){this.studentList=studentList;}

    @Override
    public String toString()
    {
        return "Class{id="+id+",classname="+classname+",studentList="+studentList+"}";
    }
}

(三)创建工具类

//MyBatisUtils.java

package com.itheima.utils;

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.Reader;

public class MyBatisUtils {
    static SqlSessionFactory sqlMapper=null;
    static{
        try{
            String resources="mybatis-config.xml";
            Reader reader=null;

            reader= Resources.getResourceAsReader(resources);
            sqlMapper=new SqlSessionFactoryBuilder().build(reader);
        }catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    public static SqlSession getSession()
    {
        return sqlMapper.openSession();
    }

}

(四)创建接口类

1、学生接口类

//StudentDao.java

package com.itheima.dao;

import com.itheima.pojo.Student;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

public interface StudentDao {
    @Select("select * from s_student where id=#{id};")
    Student findStudentById(int id);

    @Update({"update s_student set id=#{id},name=#{name},age=#{age},cid=#{cid}","where id=#{id};"})
    int updateStudentById(Student student);

    @Select("select * from s_student where cid=#{cid};")
    Student findStudentByCid(int cid);
}

2、班级、学生一对多查询接口类 

//ClassStudentDao.java

package com.itheima.dao;

import com.itheima.pojo.Class;
import org.apache.ibatis.annotations.*;

public interface ClassStudentDao {
    @Select("select * from c_class where id=#{id};")
    @Results({@Result(column = "id",property = "id"),
            @Result(column = "classname",property = "classname"),
            @Result(column="id",property = "studentList",
    many = @Many(select = "com.itheima.dao.StudentDao.findStudentByCid"))})
    Class findClassStudentById(int id);
}

(五)创建测试方法类 

//StudentDaoTest.java

import com.itheima.dao.StudentDao;
import com.itheima.pojo.Student;
import com.itheima.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.io.IOException;

public class StudentDaoTest {
    SqlSession sqlSession= MyBatisUtils.getSession();
    StudentDao studentdao=sqlSession.getMapper(StudentDao.class);

    @Test
    public void findStudentByIdTest()
    {
        System.out.println("findStudentByIdTest:");
        Student student=studentdao.findStudentById(2);
        System.out.println(student);
        sqlSession.close();
    }

    @Test
    public void updateStudentByIdTest()
    {
        System.out.println("updateStudentByIdTest:");
        Student student=new Student();
        student.setId(4);
        student.setName("李雷");
        student.setAge(21);
        student.setCid(1);
        int result=studentdao.updateStudentById(student);
        sqlSession.commit();
        sqlSession.close();
        System.out.println("成功更新了"+result+"条数据");

    }
}

//ClassStudentDaoTest.java

import com.itheima.dao.ClassStudentDao;
import com.itheima.pojo.Class;
import com.itheima.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;


public class ClassStudentDaoTest {
    SqlSession sqlSession= MyBatisUtils.getSession();
    ClassStudentDao classStudentDao=sqlSession.getMapper(ClassStudentDao.class);

    @Test
    public void findClassStudentByIdTest()
    {
        System.out.println("findClassStudentByIdTest:");
        Class class1=classStudentDao.findClassStudentById(2);
        System.out.println(class1);
        sqlSession.close();
    }
}

(六)运行测试

(1)根据学生表和班级表创建数据库,接着采用MyBatis注解完成查询id为2的学生的信息。

(2)利用MyBatis注解,将id为4的学生姓名改为李雷,年龄修改为21。

(3)MyBatis注解实现一对多的查询,查询出二班的所有学生信息。

1、查询id为2的学生信息

运行findStudentById()方法:

    @Test
    public void findStudentByIdTest()
    {
        System.out.println("findStudentByIdTest:");
        Student student=studentdao.findStudentById(2);
        System.out.println(student);
        sqlSession.close();
    }

运行结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2l546l5pa56ZW_,size_15,color_FFFFFF,t_70,g_se,x_16

 

2、 将id为4的学生姓名改为李雷,年龄修改为21

运行updateStudentById()方法:

 @Test
    public void updateStudentByIdTest()
    {
        System.out.println("updateStudentByIdTest:");
        Student student=new Student();
        student.setId(4);
        student.setName("李雷");
        student.setAge(21);
        student.setCid(1);
        int result=studentdao.updateStudentById(student);
        sqlSession.commit();
        sqlSession.close();
        System.out.println("成功更新了"+result+"条数据");

    }

运行结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2l546l5pa56ZW_,size_10,color_FFFFFF,t_70,g_se,x_16

 查看数据表:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2l546l5pa56ZW_,size_13,color_FFFFFF,t_70,g_se,x_16

 已修改成功!

3、查询出二班的所有学生信息 

运行findClassStudentById()方法:

 @Test
    public void findClassStudentByIdTest()
    {
        System.out.println("findClassStudentByIdTest:");
        Class class1=classStudentDao.findClassStudentById(2);
        System.out.println(class1);
        sqlSession.close();
    }

运行结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2l546l5pa56ZW_,size_20,color_FFFFFF,t_70,g_se,x_16

 

四、结语 

通过案例的学习,完成对MyBatis注解的学习,关注我,咱们来玥方长!

 

  • 26
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统 基于mybatis+servlet的crm管理系统基于mybatis+servlet的crm管理系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来玥方长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值