当前位置: 首页 > 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/61562.html

相关文章:

  • wordpress怎么增加字段太原seo全网营销
  • 做技术支持的网站有推广网站的公司
  • 如何注册网络公司廊坊推广seo霸屏
  • 国家企业信用公示信息网官网北京seo关键词
  • 武汉网站建设dw027谷歌商店下载官方正版
  • 使用帝国备份王搬迁织梦网站百度收录方法
  • 登别的网站应怎么做企业危机公关
  • 怎样模仿别人的网站seo零基础视频教程
  • 文档流程做网站手游推广平台有哪些
  • 驾校网站模板自己怎样开网站
  • 哪个网站可以做片头百度广告一天多少钱
  • 网站建设怎么用长尾做标题营销型网站案例
  • 怎么自己编写网站网络营销比较成功的企业
  • 国外优质设计网站百度百科合作模式
  • 在线网站优化公司今日热榜官网
  • 企业网站搜索优化外包中国seo网站
  • 美容医疗手机网站模板抖音引流推广怎么做
  • 做b2b网站销售怎样让客户找上门互联网最赚钱的行业
  • 上海做高端网站搜客通
  • 实战营销型网站建设腾讯企点app下载安装
  • 东莞做网站系统百度爱采购平台官网
  • 进一步优化新冠肺炎疫情防控措施奉化seo页面优化外包
  • 给一个公司做网站维护聚名网官网
  • 帝国cms网站搬家百度指数需求图谱
  • 公司后缀的邮箱怎么申请东莞网站建设优化技术
  • 广东网络营销服务苏州网站关键字优化
  • 华为云网站备案流程百度统计api
  • 管理公司网站建设网络销售的好处和意义
  • 湖南网站建设找拉米拉seo优化常识
  • 郑州专业网站建设在哪里青岛关键词网站排名