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

夺目视频制作网站移动网站优化排名

夺目视频制作网站,移动网站优化排名,ssh做网站步骤,微信移动网站建设多对一处理(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/330051.html

相关文章:

  • 郑州建站排名个人网页制作成品欣赏
  • 网站建设合同合同期限关键词是怎么排名的
  • 富阳做网站公司长沙seo优化
  • 科技有限公司 网站制作关键词优化推广公司哪家好
  • 哪里教做网站的优化网站建设seo
  • nginx wordpress样式丢失宁波seo网站推广
  • 一个公司名可以备案多少个网站优化课程
  • 简述网站开发的基本流程二级域名网址查询
  • 品牌网站开发公司满足seo需求的网站
  • 织梦可以做商城网站吗在线seo超级外链工具
  • wordpress 壁纸云郑州seo优化培训
  • 池州专业网站建设怎么样网络推广网站公司
  • suxing wordpress台州专业关键词优化
  • 福州网站建设软件seo查询外链
  • 怎么做网站?抖音搜索seo软件
  • 创新创业教育课程网站建设方案长沙网站优化培训
  • 免费高清logo在线观看北京seo优化分析
  • 做品牌设计公司北仑seo排名优化技术
  • 吴桥做网站价格谷歌在线浏览器入口
  • 怎样做企业宣传推广seo接单平台有哪些
  • 中国建设银行网站打不开网站建设方案优化
  • 移动端网站模板怎么做百度如何免费推广
  • 大型网站建设公司排名百度官方官网
  • 山东济宁做网站的公司市场营销案例100例
  • 计生网站生育文明建设怎么做网站宣传
  • 建设银行u盾用网站打不开百度推广公司怎么代理到的
  • 做网站的一个专题alexa全球网站排名分析
  • 福州市住房和城乡建设网站让顾客进店的100条方法
  • 网站活泼目前最好的引流推广方法
  • 旅游网站 div css 模板下载全球十大搜索引擎入口