当前位置: 首页 > wzjs >正文

火爆网页游戏排行榜百度seo学院

火爆网页游戏排行榜,百度seo学院,网站建设设计服务,深圳龙华网站建设公司哪家好多对一处理(association) 多个学生对一个老师 对于学生这边,关联:多个学生,关联一个老师[多对一] 对于老师而言,集合,一个老师有多个学生【一对多】 SQL: 测试环境搭建 1.导入依…

多对一处理(association)

  • 多个学生对一个老师

  • 对于学生这边,关联:多个学生,关联一个老师[多对一]

  • 对于老师而言,集合,一个老师有多个学生【一对多】

SQL:

测试环境搭建

1.导入依赖文件并编写配置文件

pom.xml

<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version></dependency>
</dependencies>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--   映入外部配置文件--><properties resource="db.properties"/><settings>
<!--        标准的日志工厂实现--><setting name="logImpl" value="stdout_logging"/></settings>
<environments default="development"><environment id="development"><transactionManager type="JDBC"/><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><mappers><mapper class="com.lyc.mapper.StudentMapper"/><mapper class="com.lyc.mapper.TeacherMapper"/></mappers>
</configuration>

db.properties

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username = root
password = 211314

2.新建实体类

student

package com.lyc.pojo;import lombok.Data;
import org.apache.ibatis.type.Alias;@Data
@Alias("student")
public class Student {private int id;private String name;//学生要关联一个老师private Teacher teacher;
}

Teacher

package com.lyc.pojo;import lombok.Data;
import org.apache.ibatis.type.Alias;@Data
@Alias("teacher")
public class Teacher {private int id;private String name;
}

3.编写Mybatis工具包

package com.lyc.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;public class MybatisUtils {public SqlSession getsqlSession() throws IOException {String resource = "mybatis-config.xml";InputStream stream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);return sqlSessionFactory.openSession(true);}
}

4.建立Mapper接口,建立Mapper.xml

studentMapper.java

package com.lyc.mapper;import com.lyc.pojo.Student;import java.util.List;public interface StudentMapper {List<Student> getStudent();List<Student> getStudent2();
}

teacherMapper.java

package com.lyc.mapper;import com.lyc.pojo.Teacher;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;public interface TeacherMapper {
//    @Select("select * from mybatis.teacher where id = #{tid}")Teacher getTeacher(@Param("tid") int id);
}

5.在核心配置文件中绑定注册我们的Mapper映射文件

<mappers><mapper class="com.lyc.mapper.StudentMapper"/><mapper class="com.lyc.mapper.TeacherMapper"/></mappers>

按照查询嵌套处理

studentmapper.xml

 <mapper namespace="com.lyc.mapper.StudentMapper"><!--    思路:1.查询所有的学生信息2.根据查询出来的学生的tid查询到老师信息--><select id="getStudent" resultMap="student-teacher">select *from mybatis.student;</select><resultMap id="student-teacher" type="com.lyc.pojo.Student"><result property="id" column="id"/><result property="name" column="name"/><!--        复杂的属性,我们需要单独处理对象:association集合:collection--><association property="teacher" column="tid" javaType="com.lyc.pojo.Teacher" select="getTeacher"/></resultMap><select id="getTeacher" resultType="com.lyc.pojo.Teacher">select * from mybatis.teacher where id = #{id}</select></mapper>

按照结果嵌套查询

studentmapper.xml

<!--    按照结果嵌套处理--><select id="getStudent2" resultMap="student-teacher2">select student.id,student.name,teacher.name as teacherNamefrom mybatis.student,mybatis.teacherwhere student.tid = teacher.id</select><resultMap id="student-teacher2" type="com.lyc.pojo.Student"><result property="id" column="id"/><result property="name" column="name"/><association property="teacher" javaType="com.lyc.pojo.Teacher"><result property="name" column="teacherName"/></association></resultMap>

注:单表查询时,当执行到tid时去调用映射,映射又去子查询,所以#{}里面自动填充了cloum的值,所以#{}的值可以随便添,记住,是单表查询时

回顾MySQL多对一查询方式:

  • 子查询

  • 联表查询

一对多处理(collection)

环境搭建: 与上文一致

实体类:

public class Student {private int id;private String name;//学生要关联一个老师private int tid;}public class Teacher {private int id;private String name;//一个老师有多个老师private List<Student> students;}

mapper类:

teacherMapper.java

package com.lyc.mapper;import com.lyc.pojo.Teacher;
import com.lyc.pojo.Teacher;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface TeacherMapper {
//    List<Teacher> selectTeacher();//获取指定老师下的所有学生及老师信息Teacher selectTeacher(@Param("tid") int id);Teacher selectTeacher2(@Param("tid") int id);
}

按照查询嵌套处理

TeacherMapper.xml

   <select id="selectTeacher2" resultMap="teacher-student2">select * from mybatis.teacher where id = #{tid};</select><resultMap id="teacher-student2" type="com.lyc.pojo.Teacher"><collection property="students" javaType="ArrayList" ofType="com.lyc.pojo.Student" select="getStudent" column="id"/></resultMap><select id="getStudent" resultType="com.lyc.pojo.Student">select * from mybatis.student where tid = #{tid}</select></mapper>

按照结果嵌套查询

TeacherMapper.xml

 <select id="selectTeacher" resultMap="teacher-student">select s.id sid,s.name sname,t.id tid,t.name tnamefrom mybatis.teacher tjoin mybatis.student s ont.id = s.tid and t.id = #{tid};</select>​<resultMap id="teacher-student" type="com.lyc.pojo.Teacher"><result property="id" column="tid"/><result property="name" column="tname"/><!--        复杂的属性,我们需要单独处理对象:association集合:collectionjavaType:指定属性的类型,集合中的泛型信息,我们使用ofType获取--><collection property="students" ofType="com.lyc.pojo.Student"><result property="id" column="sid"/><result property="name" column="sname"/><result property="tid" column="tid"/></collection></resultMap>

小结

  1. 关联 association

  2. 集合:collection

  3. javaType & ofype

    1. javaType用来指定实体类中属性的类型

    2. ofType 用来指定映射到List或者集合中的实体类,反省中的约束类型

注:

  • 保证SQL的可读性,精良保证通俗易懂

  • 注意一对多和多对一中 属性名和字段名的问题如果问题不好排查,可以使用日志,建议使用log4j

希望对大家有所帮助! 

http://www.dtcms.com/wzjs/286751.html

相关文章:

  • 东莞市门户网站建设怎么样手机优化大师
  • 石龙仿做网站seo关键词推广优化
  • 昆明培训网站建设本地推广平台有哪些
  • 网上找客户有哪些网站媒体网络推广价格优惠
  • 做邮箱网站seo教程免费
  • 怎么做网站图片做的更好看百度下载免费安装
  • 网站如何制作建设网络优化大师
  • 公司注册资金最新规定百度推广优化公司
  • 网站是不是用cms做的制作网站代码
  • 重庆做网站代运营做互联网项目怎么推广
  • 男女真实做性视频网站推广app佣金平台正规
  • 做网站在阿里云上面买哪个服务百度联盟项目看广告挣钱
  • 区政府网站建设规范报告沈阳全网推广公司哪家好
  • 电子商务网站建设维护网站优化哪家好
  • 购物网站销售管理长沙h5网站建设
  • 商城网站建设预算seo优化在哪里学
  • 织梦中英文网站源码百度推广在哪里
  • 百度沈阳分公司地址在哪里宝鸡seo
  • c2c网站建设什么软件可以发帖子做推广
  • 广 做网站蓝光电影下载百度地图优化排名方法
  • 吉安网站建设jxthw免费开源代码网站
  • 自己免费制作app平台汤阴县seo快速排名有哪家好
  • 网站追踪如何做手机网站优化排名
  • 外贸网站推广计划长春网站seo公司
  • 公司网站进不去qq空间服务营销
  • 网站制作什么app拉新推广接单平台
  • 做淘客网站需要备案吗免费seo优化
  • 广西省建设厅官方网站关键词排名什么意思
  • 电脑室内设计软件北京搜索引擎优化主管
  • 做网站的工作怎么样seo网站优化培训多少价格