今日内容
- 基于xml方式实现的多对多增删改查操作(一对多原理类似)
- 基于xml方式实现的多对一增删改查操作(mybatis默认多对一 为一对一)
pom.xml导入Mybatis项目依赖坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mybatis_01</artifactId>
<groupId>com.baoji.mybatis</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatis_05_duobiao</artifactId>
<packaging>jar</packaging>
<!-- 配置mybatis所需要的jar包-->
<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.44</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
</project>
基于xml方式实现的多对多增删改查操作
第一步(配置主配置文件)
SqlMapConfig.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">
<!-- mybatis 主配置文件 -->
<configuration>
<!-- 配置properties
可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置信息
resource 属性: 常用的 (resource="jdbcConfig.properties")
用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下。
url属性:
是要求按照url的属性来写地址
URL: 统一资源定位符,可以唯一标识一个资源的位置
例如 http://localhost:8080/mybatis/servlet
协议 主机 端口号 uri
uri: 统一资源标识符 ,在应用中可以唯一定位一个资源的
-->
<properties>
<!--配置连接数据库的四个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_user?characterEncoding=gbk"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
<!-- 使用typeAliases起别名,它只能配置entity中类的别名-->
<typeAliases>
<!-- typeAlias用于配置别名,type属性指的是实体类全限定类名,alias属性指定别名,当指定了别名就不再区分大小写-->
<!-- <typeAlias type="com.baoji.mybatis.entity.User" alias="user"></typeAlias> -->
<!-- 用于要配置起别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不区分大小写-->
<package name="com.baoji.mybatis.entity"/>
</typeAliases>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的配置环境 -->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的四个基本信息-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<!-- mybatis的映射配置文件位置必须和dao接口的文件位置相同,包名相同时,不需要实现dao接口 -->
<mappers>
<!-- <mapper resource="com/baoji/mybatis/dao/IUserDao.xml"></mapper> -->
<!-- package用于指定dao接口所在的包,当指定了之后就不需要再写mapper和resource以及class了-->
<package name="com.baoji.mybatis.dao"/>
</mappers>
</configuration>
第二步(数据库创建多张表)
sql语句:
DROP DATABASE IF EXISTS `mybatis_user`;
CREATE DATABASE IF NOT EXISTS mybatis_user DEFAULT CHARACTER SET='utf8';
USE mybatis_user;
-- 用户表
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(32) NOT NULL COMMENT '用户名称',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`sex` CHAR(1) DEFAULT NULL COMMENT '性别',
`address` VARCHAR(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
SELECT * FROM USER;
-- 工资表
CREATE TABLE account(
`ID` INT(11) NOT NULL COMMENT '编号',
`UID` INT(11) DEFAULT NULL COMMENT '用户编号',
`MONEY` DOUBLE DEFAULT NULL COMMENT '金额',
PRIMARY KEY (`ID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`ID` INT(11) NOT NULL COMMENT '编号',
`ROLE_NAME` VARCHAR(30) DEFAULT NULL COMMENT '角色名称',
`ROLE_DESC` VARCHAR(60) DEFAULT NULL COMMENT '角色描述',
PRIMARY KEY (`ID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `role`(`ID`,`ROLE_NAME`,`ROLE_DESC`) VALUES (1,'院长','管理整个学院'),(2,'总裁','管理整个公司'),(3,'校长','管理整个学校');
SELECT * FROM role;
DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role` (
`UID` INT(11) NOT NULL COMMENT '用户编号',
`RID` INT(11) NOT NULL COMMENT '角色编号',
PRIMARY KEY (`UID`,`RID`),
KEY `FK_Reference_10` (`RID`),
CONSTRAINT `FK_Reference_10` FOREIGN KEY (`RID`) RE