热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springbootmybatis一对一、一对多查询应用

这几天入门java,一直在看关联映射,琢磨了挺长时间,为了其他网友今后少踩坑。先总结一下有三张表:user、book、ad

这几天入门java,一直在看关联映射,琢磨了挺长时间,为了其他网友今后少踩坑。先总结一下

有三张表:user 、book、address

DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (`bookid` int(11) unsigned NOT NULL AUTO_INCREMENT,`userid` int(11) DEFAULT NULL,`bookname` varchar(255) DEFAULT NULL,`totalpage` int(10) DEFAULT NULL,`price` int(11) DEFAULT NULL,PRIMARY KEY (`bookid`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`userid` int(8) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(25) NOT NULL DEFAULT '' COMMENT '用户名',`userpassword` varchar(255) DEFAULT NULL,`userage` varchar(255) DEFAULT NULL,`useremail` varchar(255) DEFAULT NULL,PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8 COMMENT='管理员列表';

DROP TABLE IF EXISTS `address`;
CREATE TABLE `address` (`addressid` int(11) unsigned NOT NULL AUTO_INCREMENT,`userid` int(11) DEFAULT NULL,`province` varchar(32) DEFAULT NULL,`city` varchar(16) DEFAULT NULL,PRIMARY KEY (`addressid`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

user与book是一对多

user与address是一对一

新建完项目,我的目录结构是这样的。

 1、首先数据库连接及配置:

打开application.properties

server.port=8080
server.servlet.context-path=/demo
#数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/ldzy?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#加载Mapper.xml路径
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#设置config-location位置
mybatis.config-location=classpath:mybatis-config.xml
#设置type-aliases-package中指定实体扫描包类让mybatis自定扫描到自定义的路径
mybatis.type-aliases-package=com.dm.batis.bean#热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录
spring.devtools.restart.additional-paths=src/main/java
#classpath目录下的WEB-INF文件夹内容修改不重启
spring.devtools.restart.exclude=WEB-INF/**

mybatis-config.xml




2、新建user、book、address实体类

在com.dm.batis.bean创建

package com.dm.batis.bean;import java.util.List;public class User {private int userId;private String userName;private String userPassword;private int userAge;private String userEmail;private Address userAddress;//用户地址private List books;//喜欢的书public List getBooks() {return books;}public void setBooks(List books) {this.books = books;}public Address getAddress() {return userAddress;}public void setAddress(Address address) {this.userAddress = address;}public int getUserAge() {return userAge;}public void setUserAge(int userAge) {this.userAge = userAge;}public String getUserEmail() {return userEmail;}public void setUserEmail(String userEmail) {this.userEmail = userEmail;}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassword() {return userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;}
}

package com.dm.batis.bean;public class Book
{private int bookId;private String bookName;private int totalPage;private int price;public int getBookId() {return bookId;}public void setBookId(int bookId) {this.bookId = bookId;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}}

package com.dm.batis.bean;public class Address
{private int addressId;private String province;private String city;public int getAddressId() {return addressId;}public void setAddressId(int addressId) {this.addressId = addressId;}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString(){return this.province+this.city;}
}

3、创建mapper.xml文件

resources目录下面建立目录mapper

里面新建三个配置文件UserMapper.xml,AddressMapper.xml,BookMapper.xml





















4、创建mapper接口文件

在包目录下面建立目录mapper

里面新建三个配置文件UserMapper,AddressMapper,BookMapper

package com.dm.batis.mapper;import com.dm.batis.bean.Book;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.FetchType;import com.dm.batis.bean.User;import java.util.List;@Mapper
public interface UserMapper
{//一对一public User UserAddressById(int userId);//一对多public User UserBookById(int userId);}

package com.dm.batis.mapper;import java.util.List;import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import com.dm.batis.bean.Book;
import org.springframework.data.repository.query.Param;@Mapper
public interface BookMapper
{@Select("select * from book where userId = #{userId}")public List getBooksByUserId(int userId);public List UserBookList(int userId);}

package com.dm.batis.mapper;import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import com.dm.batis.bean.Address;
@Mapper
public interface AddressMapper
{@Select("select * from address where userId=#{userId}")public Address getAddressByUserId(int userId);public Address getAddressById(int userId);
}

5、在包目录下面建立目录controller

里面新建index

package com.dm.batis.controller;import com.dm.batis.bean.User;
import com.dm.batis.mapper.BookMapper;
import com.dm.batis.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class Index {@Autowiredprivate UserMapper userMapper;@Autowiredprivate BookMapper bookMapper;@RequestMapping("/index")public User index(){User user = userMapper.UserAddressById(1);//User user=userMapper.UserBookById(1);return user;}
}

6、测试

一对一

一对多

至此演示结束,因本人也是才接触java学习,有不足之处,请见谅!!


欢迎加微信:598194221,共同探讨学习java交流心得!



推荐阅读
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 本文介绍了如何通过配置 Android Studio 和 Gradle 来显著提高构建性能,涵盖内存分配优化、并行构建和性能分析等实用技巧。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
author-avatar
细妹很快乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有