mybatis實現一對多的操作
@DuYingJie
1.新增依賴包 打座標 pom
<!--定義打包格式-->
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId> junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
2、向資料庫匯入檔案 注意重新整理檢視結果
此資料庫是第三單元的 作為演示
/* Navicat Premium Data Transfer Source Server : localhost_3306 Source Server Type : MySQL Source Server Version : 50731 Source Host : localhost:3306 Source Schema : chapter03 Target Server Type : MySQL Target Server Version : 50731 File Encoding : 65001 Date: 07/03/2022 08:55:37 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; Drop Database If Exists chapter03; Create Database chapter03; use chapter03; -- ---------------------------- -- Table structure for class_info -- ---------------------------- DROP TABLE IF EXISTS `class_info`; CREATE TABLE `class_info` ( `cid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `cname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '班級名稱', `sum` int(11) NULL DEFAULT NULL COMMENT '總人數', PRIMARY KEY (`cid`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of class_info -- ---------------------------- INSERT INTO `class_info` VALUES (1, 'Java1801', 50); INSERT INTO `class_info` VALUES (2, 'Java1802', 46); -- ---------------------------- -- Table structure for class_teach -- ---------------------------- DROP TABLE IF EXISTS `class_teach`; CREATE TABLE `class_teach` ( `id` int(11) NOT NULL AUTO_INCREMENT, `class_id` int(11) NULL DEFAULT NULL, `teach_id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `class_id`(`class_id`) USING BTREE, INDEX `teach_id`(`teach_id`) USING BTREE, CONSTRAINT `class_teach_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class_info` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `class_teach_ibfk_2` FOREIGN KEY (`teach_id`) REFERENCES `teach_info` (`tid`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of class_teach -- ---------------------------- -- ---------------------------- -- Table structure for stu -- ---------------------------- DROP TABLE IF EXISTS `stu`; CREATE TABLE `stu` ( `sid` int(11) NOT NULL AUTO_INCREMENT, `sname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `course` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `cardid` int(11) NULL DEFAULT NULL, PRIMARY KEY (`sid`) USING BTREE, UNIQUE INDEX `cardid`(`cardid`) USING BTREE, CONSTRAINT `stu_ibfk_1` FOREIGN KEY (`cardid`) REFERENCES `stu_card` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of stu -- ---------------------------- INSERT INTO `stu` VALUES (1, 'ZhangSan', '20', 'Java', 1); INSERT INTO `stu` VALUES (2, 'LiSi', '21', 'Java', 2); -- ---------------------------- -- Table structure for stu_card -- ---------------------------- DROP TABLE IF EXISTS `stu_card`; CREATE TABLE `stu_card` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `balance` double NULL DEFAULT NULL, PRIMARY KEY (`cid`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of stu_card -- ---------------------------- INSERT INTO `stu_card` VALUES (1, 1000.5); INSERT INTO `stu_card` VALUES (2, 5000.5); -- ---------------------------- -- Table structure for stu_class -- ---------------------------- DROP TABLE IF EXISTS `stu_class`; CREATE TABLE `stu_class` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `cname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '班級名稱', `sum` int(11) NULL DEFAULT NULL COMMENT '總人數', PRIMARY KEY (`cid`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of stu_class -- ---------------------------- INSERT INTO `stu_class` VALUES (1, 'Java1801', 50); INSERT INTO `stu_class` VALUES (2, 'Java1802', 46); -- ---------------------------- -- Table structure for stu_info -- ---------------------------- DROP TABLE IF EXISTS `stu_info`; CREATE TABLE `stu_info` ( `sid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `sname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '學生姓名', `age` int(11) NULL DEFAULT NULL COMMENT '學生年齡', `course` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '科目', `classid` int(11) NOT NULL COMMENT '班級id', PRIMARY KEY (`sid`) USING BTREE, INDEX `classid`(`classid`) USING BTREE, CONSTRAINT `stu_info_ibfk_1` FOREIGN KEY (`classid`) REFERENCES `stu_class` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of stu_info -- ---------------------------- INSERT INTO `stu_info` VALUES (1, 'ZhangSan', 20, 'Java', 1); INSERT INTO `stu_info` VALUES (2, 'LiSi', 21, 'Java', 2); INSERT INTO `stu_info` VALUES (3, 'WangWu', 20, 'Java', 1); INSERT INTO `stu_info` VALUES (4, 'ZhaoLiu', 19, 'Java', 1); -- ---------------------------- -- Table structure for teach_info -- ---------------------------- DROP TABLE IF EXISTS `teach_info`; CREATE TABLE `teach_info` ( `tid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `tname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '教師姓名', `age` int(11) NULL DEFAULT NULL COMMENT '教師年齡', `course` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '課程', PRIMARY KEY (`tid`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of teach_info -- ---------------------------- INSERT INTO `teach_info` VALUES (1, 'ZhangSan', 31, 'JavaSE'); INSERT INTO `teach_info` VALUES (2, 'LiSi', 33, 'JavaWeb'); SET FOREIGN_KEY_CHECKS = 1;
3、配置mybatis-config.xml和db.properties
注意 位置是在resources下 掃描包的位置
密碼和賬號改為自己的即可
db.properties
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/chapter03
mysql.username=root
mysql.password=010624
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties">
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<!-- 指定對映包-->
<mappers>
<package name="cn.edu.hncj.dao"/>
</mappers>
</configuration>
4、目錄結構
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-87BSGazr-1653520571753)(C:\Users\dyj\AppData\Roaming\Typora\typora-user-images\1653396119025.png)]
5、根據資料庫建立pojo
這個自己建立即可 注意在stuclass中新增private List stuInfoList;
6、建立maper
StuInfoMapper
package cn.edu.hncj.dao;
import cn.edu.hncj.pojo.StuInfo;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.mapping.FetchType;
import java.util.List;
public interface StuInfoMapper {
@Select("select * from stu_info where sid =#{sid}")
@Results({
@Result(id = true,property = "sid",column = "sid"),
@Result(property = "sname",column = "sname"),
@Result(property = "age",column = "age"),
@Result(property ="course",column = "course"),
@Result(property = "cid",column = "classid")
})
StuInfo selectStuInfoById(int sid);
@Update("UPDATE stu_info set sname=#{sname} , age=#{age},course=#{course} where sid =#{sid}")
int updateStudent(StuInfo stuInfo);
@Select("select *from stu_info where classid=#{classid}")
@Results({
@Result(id = true,property = "sid",column = "sid"),
@Result(property = "sname",column = "sname"),
@Result(property = "age",column = "age"),
@Result(property ="course",column = "course"),
@Result(property = "cid",column = "classid")
})
List<StuInfo> selectStuByCid(int classid);
// @Select("select *from stu_info")
// @Results(
// id = "studentInfoMap",value = {
// @Result(id = true,property = "sid",column = "sid"),
// @Result(property = "sname",column = "sname"),
// @Result(property = "age",column = "age"),
// @Result(property ="course",column = "course"),
// @Result(property = "classid",column = "classid",
// one = @One(select="com.dyj.demo.mapper.StuInfoMapper.findByClassid",fetchType = FetchType.EAGER))
//
// })
// List<StuInfo> findALl();
// @Select("select *from stu_info where classid={classid}")
// StuInfo findByClassid(int classid);
}
7、建立工具類
MybatisUtils
package cn.edu.hncj.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.InputStream;
//從 SqlSessionFactory 中獲取 SqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//獲取SqlSessionFactory物件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//從 SqlSessionFactory 中獲取 SqlSession
public static SqlSession getSqlSession() {
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
8、編寫測試類
import cn.edu.hncj.dao.StuInfoMapper;
import cn.edu.hncj.pojo.StuInfo;
import cn.edu.hncj.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class MybatisTest {
@Test
public void findStuInfoBySidTest(){
SqlSession session= MybatisUtils.getSqlSession();
StuInfoMapper mapper=session.getMapper(StuInfoMapper.class);
StuInfo stuInfo = mapper.selectStuInfoById(2);
System.out.println(stuInfo.toString());
session.close();
}
@Test
public void updateStuClassTest(){
SqlSession session= MybatisUtils.getSqlSession();
StuInfoMapper mapper=session.getMapper(StuInfoMapper.class);
StuInfo stuInfo=new StuInfo();
stuInfo.setAge("22");
stuInfo.setSid(4);
stuInfo.setCourse("javaee");
stuInfo.setSname("張朝龍");
mapper.updateStudent(stuInfo);
session.commit();
session.close();
}
@Test
public void findStuInfoByCidTest(){
SqlSession session= MybatisUtils.getSqlSession();
StuInfoMapper mapper=session.getMapper(StuInfoMapper.class);
List<StuInfo> stuInfos = mapper.selectStuByCid(2);
for (StuInfo stuInfo:stuInfos){
System.out.println(stuInfo);
}
session.close();
}
}
9、結果
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-TEVkC1Re-1653520571754)(C:\Users\dyj\AppData\Roaming\Typora\typora-user-images\1653396512041.png)]
@DuYingJie
1.新增依賴包 打座標 pom
<!--定義打包格式-->
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
2、向資料庫匯入檔案 注意重新整理檢視結果
此資料庫是第三單元的 作為演示
/*
Navicat Premium Data Transfer
Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 50731
Source Host : localhost:3306
Source Schema : chapter03
Target Server Type : MySQL
Target Server Version : 50731
File Encoding : 65001
Date: 07/03/2022 08:55:37
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
Drop Database If Exists chapter03;
Create Database chapter03;
use chapter03;
-- ----------------------------
-- Table structure for class_info
-- ----------------------------
DROP TABLE IF EXISTS `class_info`;
CREATE TABLE `class_info` (
`cid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`cname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '班級名稱',
`sum` int(11) NULL DEFAULT NULL COMMENT '總人數',
PRIMARY KEY (`cid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of class_info
-- ----------------------------
INSERT INTO `class_info` VALUES (1, 'Java1801', 50);
INSERT INTO `class_info` VALUES (2, 'Java1802', 46);
-- ----------------------------
-- Table structure for class_teach
-- ----------------------------
DROP TABLE IF EXISTS `class_teach`;
CREATE TABLE `class_teach` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`class_id` int(11) NULL DEFAULT NULL,
`teach_id` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `class_id`(`class_id`) USING BTREE,
INDEX `teach_id`(`teach_id`) USING BTREE,
CONSTRAINT `class_teach_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class_info` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `class_teach_ibfk_2` FOREIGN KEY (`teach_id`) REFERENCES `teach_info` (`tid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of class_teach
-- ----------------------------
-- ----------------------------
-- Table structure for stu
-- ----------------------------
DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
`sid` int(11) NOT NULL AUTO_INCREMENT,
`sname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`course` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`cardid` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`sid`) USING BTREE,
UNIQUE INDEX `cardid`(`cardid`) USING BTREE,
CONSTRAINT `stu_ibfk_1` FOREIGN KEY (`cardid`) REFERENCES `stu_card` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of stu
-- ----------------------------
INSERT INTO `stu` VALUES (1, 'ZhangSan', '20', 'Java', 1);
INSERT INTO `stu` VALUES (2, 'LiSi', '21', 'Java', 2);
-- ----------------------------
-- Table structure for stu_card
-- ----------------------------
DROP TABLE IF EXISTS `stu_card`;
CREATE TABLE `stu_card` (
`cid` int(11) NOT NULL AUTO_INCREMENT,
`balance` double NULL DEFAULT NULL,
PRIMARY KEY (`cid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of stu_card
-- ----------------------------
INSERT INTO `stu_card` VALUES (1, 1000.5);
INSERT INTO `stu_card` VALUES (2, 5000.5);
-- ----------------------------
-- Table structure for stu_class
-- ----------------------------
DROP TABLE IF EXISTS `stu_class`;
CREATE TABLE `stu_class` (
`cid` int(11) NOT NULL AUTO_INCREMENT,
`cname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '班級名稱',
`sum` int(11) NULL DEFAULT NULL COMMENT '總人數',
PRIMARY KEY (`cid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of stu_class
-- ----------------------------
INSERT INTO `stu_class` VALUES (1, 'Java1801', 50);
INSERT INTO `stu_class` VALUES (2, 'Java1802', 46);
-- ----------------------------
-- Table structure for stu_info
-- ----------------------------
DROP TABLE IF EXISTS `stu_info`;
CREATE TABLE `stu_info` (
`sid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`sname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '學生姓名',
`age` int(11) NULL DEFAULT NULL COMMENT '學生年齡',
`course` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '科目',
`classid` int(11) NOT NULL COMMENT '班級id',
PRIMARY KEY (`sid`) USING BTREE,
INDEX `classid`(`classid`) USING BTREE,
CONSTRAINT `stu_info_ibfk_1` FOREIGN KEY (`classid`) REFERENCES `stu_class` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of stu_info
-- ----------------------------
INSERT INTO `stu_info` VALUES (1, 'ZhangSan', 20, 'Java', 1);
INSERT INTO `stu_info` VALUES (2, 'LiSi', 21, 'Java', 2);
INSERT INTO `stu_info` VALUES (3, 'WangWu', 20, 'Java', 1);
INSERT INTO `stu_info` VALUES (4, 'ZhaoLiu', 19, 'Java', 1);
-- ----------------------------
-- Table structure for teach_info
-- ----------------------------
DROP TABLE IF EXISTS `teach_info`;
CREATE TABLE `teach_info` (
`tid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`tname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '教師姓名',
`age` int(11) NULL DEFAULT NULL COMMENT '教師年齡',
`course` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '課程',
PRIMARY KEY (`tid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of teach_info
-- ----------------------------
INSERT INTO `teach_info` VALUES (1, 'ZhangSan', 31, 'JavaSE');
INSERT INTO `teach_info` VALUES (2, 'LiSi', 33, 'JavaWeb');
SET FOREIGN_KEY_CHECKS = 1;
3、配置mybatis-config.xml和db.properties
注意 位置是在resources下 掃描包的位置
密碼和賬號改為自己的即可
db.properties
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/chapter03
mysql.username=root
mysql.password=010624
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties">
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<!-- 指定對映包-->
<mappers>
<package name="cn.edu.hncj.dao"/>
</mappers>
</configuration>
4、目錄結構
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-k64T9KJO-1653520572874)(C:\Users\dyj\AppData\Roaming\Typora\typora-user-images\1653396119025.png)]
5、根據資料庫建立pojo
這個自己建立即可 注意在stuclass中新增private List stuInfoList;
6、建立maper
StuInfoMapper
package cn.edu.hncj.dao;
import cn.edu.hncj.pojo.StuInfo;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.mapping.FetchType;
import java.util.List;
public interface StuInfoMapper {
@Select("select * from stu_info where sid =#{sid}")
@Results({
@Result(id = true,property = "sid",column = "sid"),
@Result(property = "sname",column = "sname"),
@Result(property = "age",column = "age"),
@Result(property ="course",column = "course"),
@Result(property = "cid",column = "classid")
})
StuInfo selectStuInfoById(int sid);
@Update("UPDATE stu_info set sname=#{sname} , age=#{age},course=#{course} where sid =#{sid}")
int updateStudent(StuInfo stuInfo);
@Select("select *from stu_info where classid=#{classid}")
@Results({
@Result(id = true,property = "sid",column = "sid"),
@Result(property = "sname",column = "sname"),
@Result(property = "age",column = "age"),
@Result(property ="course",column = "course"),
@Result(property = "cid",column = "classid")
})
List<StuInfo> selectStuByCid(int classid);
// @Select("select *from stu_info")
// @Results(
// id = "studentInfoMap",value = {
// @Result(id = true,property = "sid",column = "sid"),
// @Result(property = "sname",column = "sname"),
// @Result(property = "age",column = "age"),
// @Result(property ="course",column = "course"),
// @Result(property = "classid",column = "classid",
// one = @One(select="com.dyj.demo.mapper.StuInfoMapper.findByClassid",fetchType = FetchType.EAGER))
//
// })
// List<StuInfo> findALl();
// @Select("select *from stu_info where classid={classid}")
// StuInfo findByClassid(int classid);
}
7、建立工具類
MybatisUtils
package cn.edu.hncj.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.InputStream;
//從 SqlSessionFactory 中獲取 SqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//獲取SqlSessionFactory物件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//從 SqlSessionFactory 中獲取 SqlSession
public static SqlSession getSqlSession() {
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
8、編寫測試類
import cn.edu.hncj.dao.StuInfoMapper;
import cn.edu.hncj.pojo.StuInfo;
import cn.edu.hncj.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class MybatisTest {
@Test
public void findStuInfoBySidTest(){
SqlSession session= MybatisUtils.getSqlSession();
StuInfoMapper mapper=session.getMapper(StuInfoMapper.class);
StuInfo stuInfo = mapper.selectStuInfoById(2);
System.out.println(stuInfo.toString());
session.close();
}
@Test
public void updateStuClassTest(){
SqlSession session= MybatisUtils.getSqlSession();
StuInfoMapper mapper=session.getMapper(StuInfoMapper.class);
StuInfo stuInfo=new StuInfo();
stuInfo.setAge("22");
stuInfo.setSid(4);
stuInfo.setCourse("javaee");
stuInfo.setSname("張朝龍");
mapper.updateStudent(stuInfo);
session.commit();
session.close();
}
@Test
public void findStuInfoByCidTest(){
SqlSession session= MybatisUtils.getSqlSession();
StuInfoMapper mapper=session.getMapper(StuInfoMapper.class);
List<StuInfo> stuInfos = mapper.selectStuByCid(2);
for (StuInfo stuInfo:stuInfos){
System.out.println(stuInfo);
}
session.close();
}
}
9、結果
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-y5qwKnQo-1653520572876)(C:\Users\dyj\AppData\Roaming\Typora\typora-user-images\1653396512041.png)]