【SSM框架】为集合类型属性赋值

news2024/11/28 6:36:35

🍓个人主页:个人主页

🍒系列专栏:SSM框架

目录

1.为集合类型属性赋值

①为List集合类型属性赋值

②为Map集合类型属性赋值

2.p命名空间

3.引入外部属性文件 


1.为集合类型属性赋值

①为List集合类型属性赋值

Clazz 类中添加以下代码:
private List<Student> students;
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
方法1:配置bean
若为Set集合类型属性赋值,只需要将其中的list标签改为set标签即可
    <bean id="clazzTwo" class="com.atguigu.spring.pojo.Clazz">
        <property name="clazzId" value="1"></property>
        <property name="clazzName" value="计算机科学与技术"></property>
        <property name="students">
            <list>
                <ref bean="studentOne"></ref>
                <ref bean="studentTwo"></ref>
                <ref bean="studentThree"></ref>
            </list>
        </property>
    </bean>

    <bean id="studentOne" class="com.atguigu.spring.pojo.Student">
        <property name="id" value="1001"></property>
        <property name="name" value="赵1"></property>
        <property name="age" value="22"></property>
        <property name="sex" value="女"></property>

        <property name="hobbies">
            <array>
                <value>吃饭</value>
                <value>睡觉</value>
                <value>打豆豆</value>
            </array>
        </property>
    </bean>
    <bean id="studentTwo" class="com.atguigu.spring.pojo.Student">
        <property name="id" value="1002"></property>
        <property name="name" value="赵2"></property>
        <property name="age" value="24"></property>
        <property name="sex" value="女"></property>

        <property name="hobbies">
            <array>
                <value>吃饭</value>
                <value>睡觉</value>
                <value>打豆豆</value>
            </array>
        </property>
    </bean>

    <bean id="studentThree" class="com.atguigu.spring.pojo.Student">
        <property name="id" value="1004"></property>
        <property name="name" value="赵3"></property>
        <property name="age" value="21"></property>
        <property name="sex" value="女"></property>

        <property name="hobbies">
            <array>
                <value>吃饭</value>
                <value>睡觉</value>
                <value>打豆豆</value>
            </array>
        </property>

        
    </bean>

测试:

    @org.junit.Test
    public void testHelloWorld(){

        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        Clazz clazzTwo = ac.getBean("clazzTwo", Clazz.class);
        System.out.println(clazzTwo);


   

方法2:配置一个集合类型的bean,需要使用util 的约束-

    <bean id="clazzTwo" class="com.atguigu.spring.pojo.Clazz">
        <property name="clazzId" value="1"></property>
        <property name="clazzName" value="计算机科学与技术"></property>
        <property name="students" ref="studentsList">
        </property>
    </bean>
    <util:list id="studentsList">
        <ref bean="studentOne"></ref>
        <ref bean="studentTwo"></ref>
        <ref bean="studentThree"></ref>
    </util:list>

效果一样的:

②为Map集合类型属性赋值

创建教师类Teacher

public class Teacher {
    private Integer tid;
    private String tname;

    public Teacher() {
    }

    public Teacher(Integer tid, String tname) {
        this.tid = tid;
        this.tname = tname;
    }

    public Integer getTid() {
        return tid;
    }

    public void setTid(Integer tid) {
        this.tid = tid;
    }

    public String getTname() {
        return tname;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "tid=" + tid +
                ", tname='" + tname + '\'' +
                '}';
    }
}

Student类中添加以下代码:
private Map<String, Teacher> teacherMap;
public Map<String, Teacher> getTeacherMap() {
return teacherMap;
}
public void setTeacherMap(Map<String, Teacher> teacherMap) {
this.teacherMap = teacherMap;
}
方法1:配置bean( 引用集合类型的 bean
    <bean id="student" class="com.atguigu.spring.pojo.Student">
        <property name="id" value="1004"></property>
        <property name="name" value="赵六"></property>
        <property name="age" value="26"></property>
        <property name="sex" value="女"></property>

        <property name="clazz">
            <!-- 在一个bean中再声明一个bean就是内部bean -->
            <!-- 内部bean只能用于给属性赋值,不能在外部通过IOC容器获取,因此可以省略id属性 -->
            <bean id="clazzInner" class="com.atguigu.spring.pojo.Clazz">
                <property name="clazzId" value="2"></property>
                <property name="clazzName" value="软件工程"></property>
            </bean>
        </property>

        <property name="hobbies">
            <array>
                <value>吃饭</value>
                <value>睡觉</value>
                <value>打豆豆</value>
            </array>
        </property>
        <property name="teacherMap">
            <map>
                <entry key="1" value-ref="teacherOne"></entry>
                <entry key="2" value-ref="teacherTwo"></entry>
            </map>
        </property>
    </bean>


    <bean id="teacherOne" class="com.atguigu.spring.pojo.Teacher">
        <property name="tid" value="11111"></property>
        <property name="tname" value="小王"></property>

    </bean>
    <bean id="teacherTwo" class="com.atguigu.spring.pojo.Teacher">
        <property name="tid" value="22222"></property>
        <property name="tname" value="小李"></property>

    </bean>

 测试:

    public void testHelloWorld(){

        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = ac.getBean("student", Student.class);
        System.out.println(student);


    }

方法2:配置bean(util:map):

    <bean id="student" class="com.atguigu.spring.pojo.Student">
        <property name="id" value="1004"></property>
        <property name="name" value="赵六"></property>
        <property name="age" value="26"></property>
        <property name="sex" value="女"></property>

        <property name="clazz">
            <!-- 在一个bean中再声明一个bean就是内部bean -->
            <!-- 内部bean只能用于给属性赋值,不能在外部通过IOC容器获取,因此可以省略id属性 -->
            <bean id="clazzInner" class="com.atguigu.spring.pojo.Clazz">
                <property name="clazzId" value="2"></property>
                <property name="clazzName" value="软件工程"></property>
            </bean>
        </property>

        <property name="hobbies">
            <array>
                <value>吃饭</value>
                <value>睡觉</value>
                <value>打豆豆</value>
            </array>
        </property>
        <property name="teacherMap" ref="teacherMap">
        </property>
    </bean>

    <util:map id="teacherMap">
        <entry key="1" value-ref="teacherOne"></entry>
        <entry key="2" value-ref="teacherTwo"></entry>
    </util:map>

2.p命名空间

引入p命名空间后,可以通过以下方式为bean的各个属性赋值

    <bean id="studentT" class="com.atguigu.spring.pojo.Student" p:name="李王" p:id="1009" p:teacherMap-ref="teacherMap">

    </bean>

3.引入外部属性文件 

①加入依赖

<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
②创建外部属性文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm? serverTimezone=UTC
jdbc.username=root
jdbc.password=root
③引入属性文件
 <context:property-placeholder location="jdbc.properties"></context:property-placeholder>
④配置 bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd">


    <context:property-placeholder location="jdbc.properties"></context:property-placeholder>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="${jdbc.url}"/>
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    
</bean>




</beans>
⑤测试

    public void test(){
        ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("spring-datasource.xml");
        DruidDataSource bean = ioc.getBean(DruidDataSource.class);
        try {
            System.out.println(bean.getConnection());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国三大主流开源Linux操作系统社区及其产品生态

作者&#xff1a;IT圈黎俊杰 操作系统是基础软件的核心&#xff0c;是科技研发必备的底层支撑产品&#xff0c;它的核心技术至今仍然由美国为代表的西方国家所掌控着。由于以前国产操作系统产业长期处于“多、小、散”的状态&#xff0c;未能建立起完善的生态、未能研发出真正好…

python笔记(一)

文章目录字节对象与字符转换动态爬虫实施辅助工具python 部分内置方法示例&#xff1a;python虚拟环境的创建与激活执行多个.py程序获取当前系统默认浏览器名称反编译小程序PC端小程序&#xff08;wxapkg&#xff09;解密&#xff1a;反编译字节对象与字符转换 data1 babc # …

计算机系统实验-BombLab

一.实验题目及目的 1.实验题目 程序运行在linux环境中。程序运行中有6个关卡&#xff08;6个phase&#xff09;&#xff0c;每个phase需要用户在终端上输入特定的字符或者数字才能通关&#xff0c;否则将会引爆炸弹。需要通过分析汇编代码&#xff0c;使用gdb调试等方式找到正…

oracle入门-19c 安装详细教程

我们知道学习一门技术&#xff0c;第一件事情就是搭建对应的环境。本教程将详细教大家如何安装oracle。 目录一、虚拟机创建二、挂载镜像、安装及系统配置三、 软件包传输四、数据库安装五、 图形化向导建库一、虚拟机创建 处理器数量根据自己的机器配置进行调整&#xff08;4 …

Android IPC机制

本文首发于个人博客 “胖蔡叨叨叨”&#xff0c;更多相关信息可点击查看《Android IPC机制》​​​​​​​ IPC IPC(Inter Process Communication) 进程间通信&#xff0c;是指系统中运行的不同进程间的信息交互过程。Android IPC通常用于应用间、或同应用不同进程间的数据通…

3分钟读懂数据可视化如何帮助企业智慧管理,提升管理水平

随着大数据时代的到来&#xff0c;企业管理的决策越来越倚重数据指标&#xff0c;通过数据指标了解公司运作的情况&#xff0c;产品生产销售情况&#xff0c;收入与支出情况等等&#xff0c;更大的作用是对商业趋势预测提供了决策依据&#xff0c;使公司提前布局未来&#xff0…

Q-Automation:基于ATX的自动化测试管理软件

Softing Q-Automation是基于ATX的自动化测试管理软件&#xff0c;用于测试电子控制单元&#xff08;ECU&#xff09;。该软件支持诊断协议层测试和诊断功能测试&#xff0c;并且只需填写Excel表格&#xff0c;即可实现半自动化测试需求&#xff0c;从而缩短了用户的测试周期。同…

2022年终Java编程技术总结

目录 00 总体脑图 第一章、基础篇 01 计算机基础 ## 1.1 操作系统 1.1.1 基本知识 略 1.1.2 常见Linux命令 目录文件内容搜索系统类网络权限cdcp/scpvi/vimfind: find . -name xxkillnetstat -anchmodlsmvcatgrep: ps -efgrep xxlsof: lsof-i:portmkdirrmtailwhereistopp…

web前端期末大作业 ——电影主题介绍 你好,李焕英 ——html+css+javascript网页设计实例

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

Win11电脑蓝屏怎么办?Win11电脑蓝屏的修复方法

Win11电脑蓝屏怎么办&#xff1f;电脑蓝屏是最为常见的系统故障问题之一&#xff0c;当电脑出现蓝屏时一般分为可以开机以及无法开机的情况&#xff0c;针对这两种情况&#xff0c;下面小编分别准备了对应的解决方法&#xff0c;有需要的朋友们欢迎收藏慢慢看哦。 方法一&#…

家居类小红书达人投放总结,kol执行策略

在小红书平台上&#xff0c;许多品牌方都做了达人投放&#xff0c;但结果却反响平平&#xff0c;最后才发现是达人挑选出了问题&#xff0c;而发现这个问题的代价就是错失先机&#xff0c;也耗费大量成本来试错&#xff0c;今天为大家分享一下小红书达人投放总结以及超硬干货。…

多线程安全问题原理和4种解决办法

摘要&#xff1a;多线程访问了共享的数据,会产生线程安全问题。本文分享自华为云社区《多线程安全问题原理和解决办法Synchronized和ReentrantLock使用与区别》&#xff0c;作者&#xff1a;共饮一杯无。 线程安全问题概述 卖票问题分析 单窗口卖票一个窗口(单线程)卖100张票…

大数据学习 -- 利用Java API 将文件写入HDFS

利用API写入文件写入HDFS文件&#xff08;1&#xff09;将数据直接写入HDFS文件&#xff08;2&#xff09;将本地文件写入HDFS文件写入HDFS文件 类似于HDFS Shell里的hdfs dfs -put命令在net.zwh.hdfs包里创建WriteFileOnHDFS类 &#xff08;1&#xff09;将数据直接写入HDFS…

【记录】ChatGPT|注册流程、使用技巧与应用推荐(更新至2022年12月14日)

昨天&#xff0c;2022年12月13日&#xff0c;在下午和晚上&#xff0c;ChatGPT 就开始因为请求过多而写到一半就崩溃&#xff0c;出现network error&#xff0c;可见它的关注度确实是越来越可观了。 正好最近世界杯&#xff0c;有博客活动&#xff0c;干脆也总结一下 ChatGPT 目…

大白话讲懂word2vec原理和如何使用

前言 做自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;这个领域的小伙伴们肯定对word2vec这个模型很熟悉了&#xff0c;它就是一种最为常见的文本表示的算法&#xff0c;是将文本数据转换成计算机能够运算的数字或者向量。在自然语言处理领…

【Docker】Dockerfile从概念介绍到快速上手编写案例实战

本期目录1. Dockerfile介绍1.1 Dockerfile的重要性1.2 构建三步骤2. Dockerfile构建过程2.1 Dockerfile内容基础2.2 Dockerfile执行流程2.3 总结3. Dockerfile常用保留字指令3.1 Dockerfile常用保留字一览3.2 保留字讲解4. 案例演示-自定义CentOS镜像4.1 前期准备4.2 编写Docke…

黑白图片怎样上色?教你如何给黑白照片上色

平时我们在网上浏览照片时&#xff0c;就会经常看到一些黑白色的照片。自从前段时间的复古风出现之后&#xff0c;很多小伙伴都会给自己拍摄的一些照片加上黑白滤镜&#xff0c;让原本彩色的照片变成了黑白色的&#xff0c;那大家知道黑白照片怎么变成彩色照片吗&#xff1f;今…

xxljob 自动清理日志的业务逻辑,以及涉及到的文件

目录 1 需求2 实现3 JobLogFileCleanThread1 需求 xxljob定时任务,会产生很多的日志文件,那么他是如何自动清除的呢? 2 实现 我们自己的项目集成了xxljob之后,会在yml里面有一个配置 ### 执行器日志文件保存天数 [选填] : 过期日志自动清理, # 限制值大于等于3时生效; …

物联网通信技术第7章 自组织网络(非常全,持续更新)

目录 知识点要求 7.1自组织网络概述 7.1.1 自组织网络的定义&#xff08;掌握&#xff09; 7.1.2 自组织网络的特点 &#xff08;理解&#xff09; 7.1.3 自组织网络的应用 7.2 自组织网络的体系结构&#xff08;了解&#xff09; 7.2.1 节点结构 7.2.2 自组织网络的网…

微信小程序开发—入门到跑路(二)

1、学习目标 知识点名称知识点内容难度系数要求程度模板语法数据绑定、事件绑定、条件渲染、列表渲染2星掌握WXSS样式WXSS3星掌握配置操作全局配置、TabBar配置、页面配置、3星掌握网络请求和案例网络数据请求、本地生活案例3星掌握文章目录1、学习目标2、模板语法2.1、数据绑…