User-Order:一对多
public class User {
private Integer id;
private String username;
private String sex;
private Date birthday;
private String address;
private String uuid2;
private List<Order> orders; //一个用户对应多个订单
get/set()...
public class Order {
private Integer id;
private Integer userId;//用户ID
private String number;
private Date createtime;
private String note;
private User user; //多个订单对应一个用户
get/set()...
-- ----------------------------
-- Table structure for `orders`
-- ----------------------------
DROP TABLE IF EXISTS `order`;
CREATE TABLE `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT '下单用户id',
`number` varchar(32) NOT NULL COMMENT '订单号',
`createtime` datetime NOT NULL COMMENT '创建订单时间',
`note` varchar(100) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `FK_orders_1` (`user_id`),
CONSTRAINT `FK_order_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` date DEFAULT NULL COMMENT '生日',
`sex` char(1) DEFAULT NULL COMMENT '性别',
`address` varchar(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
public interface UserMapper {
/**
* 根据用户ID查询用户信息
* @param id
* @return
*/
User getUserById(Integer id);
/**
* 根据用户名查找用户列表
* @param name
* @return
*/
List<User> getUserByUserName(String name);
/**
* 添加用户
* @param user
*/
void inserUser(User user);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空间,类似于java包,主要用于隔离sql语句的,后续有重要作用
#{}:点位符,相当于jdbc的?
${}:字符串拼接指令,注意如果入参为普通数据类型时,括号里面只能写value
-->
<!-- 动态代理开发dao四个军规:
1、namespace必需是接口的全路径名
2、sql id 必需与接口的方法名称一致
3、parameterType必需与接口方法的入参类型一致
4、resultType必需与接口返回值类型一致
-->
<mapper namespace="com.itheima.mybatis.mapper.UserMapper">
<!-- id:sql id标识sql语句的唯一标识
parameterType:入参的数据类型
resultType:返回结果的数据类型
-->
<select id="getUserById" parameterType="int" resultType="uSEr">
SELECT`id`,`username`,`birthday`,`sex`,`address`
FROM `user`
WHERE id = #{id123}
</select>
<!-- resultType:如果返回结果是集合时,只需要设置为元素的数据类型就可 -->
<select id="getUserByUserName" parameterType="string" resultType="com.itheima.mybatis.pojo.User">
SELECT`id`, `username`,`birthday`,`sex`,`address`
FROM `user`
WHERE username LIKE '%${value}%'
</select>
<!-- 自增主键返回第二种配置方式:useGeneratedKeys使用自增,keyProperty与上一个属性配套使用 -->
<insert id="inserUser" parameterType="com.itheima.mybatis.pojo.User" useGeneratedKeys="true" keyProperty="id">
<!-- 通过selectKey配置自增主键返回
keyProperty:接收的主键属性
resultType:主键数据类型
order:指定selectKey执行顺序:BEFORE(在sql插入之前),AFTER(在sql插入之后)
-->
<!-- <selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey> -->
INSERT INTO `user` (`username`, `birthday`, `sex`,`address`)
VALUES (#{username},#{birthday},#{sex},#{address});
</insert>
</mapper>
一对多关联增加
一对多关联删除
一对多关联修改