一。使用的是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)测试代码