搭建mybatis框架,完成单表增删改查操作,测试

一。使用的是MySQL数据库。新建名为task的数据库,在task数据库中新建名为student的表。在表中适当添加数据。创建表和添加数据的SQL语句与表格如下所示。

--创建表
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `sid` varchar(40) NOT NULL DEFAULT '' COMMENT 'UUID,唯一标识',
  `id` int(10) DEFAULT NULL COMMENT '学生编号',
  `name` varchar(20) DEFAULT NULL COMMENT '学生姓名',
  `password` varchar(20) DEFAULT NULL COMMENT '学生密码',
  `age` int(3) unsigned DEFAULT NULL COMMENT '学生年龄',
  `sex` varchar(2) DEFAULT NULL COMMENT '学生性别',
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--在表中添加数据
INSERT INTO `student` VALUES ('9577f4badff2443e9e67bcc63b640341', '1005', 'KID', '12345', '20', '女');
INSERT INTO `student` VALUES ('9577f4badff2443e9e67bcc63b640342', '1001', '张三', '1235', '12', '女');
INSERT INTO `student` VALUES ('c93bbe3c69ed4cbeb07a2a06ccb97612', '1002', '李四', '1235', '30', '男');
INSERT INTO `student` VALUES ('db7d44de97e1418d95fd73a77b9a9b0c', '1003', '王五', '1235', '12', '女');
INSERT INTO `student` VALUES ('fjakslfk349rhrksar4', '1004', '赵六', '1235', '25', '男');

二、在idear中创建工程Maven工程

1.new project

注意:建工程时注意版本号,后续中可能因为版本号不同报错 !

2.设置包名

3.引入Mybatis(映射)

注意:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.

(1)可能会出现文件资源获取失败的问题,可以直接将下面的代码复制在项目的pom.xml配置文件中即可。

 <!--在build中配置resources,来防止资源导出失败的问题-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

(2)需要在resoutces包下创建mybatis-config.xml文件,文件名可以是其他的,但是最好和官方文件名相符;将官方给出的配置文件代码复制粘贴到自己新创建的配置文件中。

(3)<mapper></mapper>中的配置自己的数据库连接数据。提供连接数据库的信息。

 (4)在resoutces文件夹下创建一个config.properties资源文件。

(5)在新创建的config.properties资源文件中,添加自己数据库的信息。

 三,代码实现增删改查

规范使用MVC架构(一个新的类 到底往哪个目录下的哪个文件夹里写?此时解决办法就是:需要一个模式去规范,到底哪个类该往哪里写。)controller存放控制层代码,dao包中存放数据库工具类,pojo包中存放Student实例类,service包中存放业务接口和相对应的配置文件。

(1)控制层controller代码

package com.kid.controller;

import com.kid.dao.MyBatisUtil;
import com.kid.pojo.Student;
import com.kid.service.StudentService;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class StudentController {

    /**
     * 重载,没有参数就查询所有学生信息
     *
     * @return 返回所有学生的信息列表
     */
    public List<Student> selectStudent() {
        return getStudentAll();
    }

    /**
     * 重载,根据参数,选择调用查找学生的方法
     *
     * @param object 查找学生需要的参数的值
     * @param str    查找学生需要的参数的类型,Sid,Id,Name,Sex,Age
     * @return
     */
    public List<Student> selectStudent(Object object, String str) {
        List<Student> list = null;

        if (str == null) {
            list = getStudentAll();
        } else {

            switch (str) {
                case "sid":
                case "Sid":
                    list = getStudentBySid((String) object);
                    break;
                case "id":
                case "Id":
                    list = getStudentById((int) object);
                    break;
                case "name":
                case "Name":
                    list = getStudentByName((String) object);
                    break;
                case "age":
                case "Age":
                    list = getStudentByAge((int) object);
                    break;
                case "sex":
                case "Sex":
                    list = getStudentBySex((String) object);
                    break;
            }
        }

        return list;
    }

    /**
     * 查找所有学生信息
     *
     * @return 返回所有学生的信息列表
     */
    public List<Student> getStudentAll() {
        List<Student> list = null;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        list = StudentService.getStudentAll();
        sqlSession.close();
        return list;
    }

    /**
     * 根据Sid查找学生信息
     *
     * @param sid 学生唯一标识
     * @return 返回符合查询条件的学生信息列表
     */
    public List<Student> getStudentBySid(String sid) {
        List<Student> list = null;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        list = StudentService.getStudentBySid(sid);
        sqlSession.close();
        return list;
    }

    /**
     * 根据学生Id学号查询学生信息
     *
     * @param id 学生的学号
     * @return 返回符合查询条件的学生信息列表
     */
    public List<Student> getStudentById(int id) {
        List<Student> list = null;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        list = StudentService.getStudentById(id);
        sqlSession.close();
        return list;
    }

    /**
     * 根据学生姓名查询学生信息
     *
     * @param name 学生姓名
     * @return 返回符合查询条件的学生信息列表
     */
    public List<Student> getStudentByName(String name) {
        List<Student> list = null;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        list = StudentService.getStudentByName(name);
        sqlSession.close();
        return list;
    }

    /**
     * 根据学生年龄查询学生信息
     *
     * @param age 学生年龄
     * @return 返回符合查询条件的学生信息列表
     */
    public List<Student> getStudentByAge(int age) {
        List<Student> list = null;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        list = StudentService.getStudentByAge(age);
        sqlSession.close();
        return list;
    }

    /**
     * 根据学生性别查询学生信息
     *
     * @param sex 学生性别
     * @return 返回符合查询条件的学生信息列表
     */
    public List<Student> getStudentBySex(String sex) {
        List<Student> list = null;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        list = StudentService.getStudentBySex(sex);
        sqlSession.close();
        return list;
    }

    /**
     * 根据提供的学生对象,添加学生信息
     *
     * @param student 学生对象
     * @return 插入成功返回真,否则返回假
     */
    public boolean insertStudent(Student student) {
        boolean result = false;
        SqlSession session = MyBatisUtil.getSqlSession();
        StudentService StudentService = session.getMapper(StudentService.class);
        result = StudentService.insertStudent(student) > 0 ? true : false;
        session.close();
        return result;
    }

    /**
     * 根据参数,选择调用删除学生信息的方法
     *
     * @param object 需要的参数值
     * @param str    删除学生的依据,根据Sid,Id,Name,Sex,Age
     * @return 删除成功返回真,否则返回假
     */
    public boolean deleteStudent(Object object, String str) {
        boolean flag = false;

        switch (str) {
            case "sid":
            case "Sid":
                flag = deleteStudentBySid((String) object);
                break;
            case "id":
            case "Id":
                flag = deleteStudentById((int) object);
                break;
            case "name":
            case "Name":
                flag = deleteStudentByName((String) object);
                break;
            case "age":
            case "Age":
                flag = deleteStudentByAge((Integer) object);
                break;
            case "sex":
            case "Sex":
                flag = deleteStudentBySex((String) object);
                break;
        }
        return flag;
    }

    /**
     * 根据学生Sid删除学生
     *
     * @param sid
     * @return
     */
    public boolean deleteStudentBySid(String sid) {
        boolean result;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        result = StudentService.deleteStudentBySid(sid) > 0 ? true : false;
        sqlSession.close();
        return result;
    }

    /**
     * 根据学生编号删除学生
     *
     * @param id 学生的Id编号
     * @return 删除成功返回真, 否则返回假
     */
    public boolean deleteStudentById(int id) {
        boolean result;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        result = StudentService.deleteStudentById(id) > 0 ? true : false;
        sqlSession.close();
        return result;
    }

    /**
     * 根据名字删除学生
     *
     * @param name 学生姓名
     * @return 删除成功返回真, 否则返回假
     */
    public boolean deleteStudentByName(String name) {
        boolean result;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        result = StudentService.deleteStudentByName(name) > 0 ? true : false;
        sqlSession.close();
        return result;
    }

    /**
     * 根据年龄删除学生
     *
     * @param age 学生的年龄
     * @return 删除成功返回真, 否则返回假
     */
    public boolean deleteStudentByAge(int age) {
        boolean result;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        result = StudentService.deleteStudentByAge(age) > 0 ? true : false;
        sqlSession.close();
        return result;
    }

    /**
     * 根据性别删除学生
     *
     * @param sex 学生的性别
     * @return 删除成功返回真, 否则返回假
     */
    public boolean deleteStudentBySex(String sex) {
        boolean result;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        result = StudentService.deleteStudentBySex(sex) > 0 ? true : false;
        sqlSession.close();
        return result;
    }

    /**
     * 根据提供的学生对象,更新学生信息
     *
     * @param student 学生的对象
     * @return 更新成功返回真,否者返回假
     */
    public boolean updateStudent(Student student) {
        boolean result = false;
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentService StudentService = sqlSession.getMapper(StudentService.class);
        result = StudentService.updateStudent(student) > 0 ? true : false;
        sqlSession.close();
        return result;
    }

}

(2)测试代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值