父工程的pom文件,要安装的依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.atguigu</groupId><artifactId>ssm-spring-part</artifactId><version>1.0-SNAPSHOT</version><modules><module>spring-Ioc-xml-01</module><module>spring-ioc-xml-practice-02</module><module>spring-ioc-annotation-03</module></modules><packaging>pom</packaging><!-- 声明项目属性,这些属性可以在POM文件的其他地方引用--><properties><!-- 源码编译版本 --><maven.compiler.source>17</maven.compiler.source><!-- 目标字节码版本 --><maven.compiler.target>17</maven.compiler.target><!-- 项目构建时的源代码编码方式 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 导入依赖,在此处导入,所有的子工程都有相应的依赖 --><dependencies><!-- spring context 依赖 --><!-- 当你引入 Spring Context 依赖之后,表示将Spring的基础依赖引入了 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.6</version></dependency><!-- junit5 测试 --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>6.0.6</version></dependency></dependencies></project>
下面这个是子工程哦,因为父工程已经有依赖了,所以子工程不再导了
src/main/resources/jdbc.properties
atguitu.url=jdbc:mysql:///my_study
atguigu.driver=com.mysql.cj.jdbc.Driver
atguigu.username=root
atguigu.password=root
Student.java类
package com.atguigu.pojo;public class Student {private Integer id;private String name;private String pwd;private String plone;private String address;public Integer getId() { return id; }public String getPwd() { return pwd; }public void setPwd(String pwd) { this.pwd = pwd; }public void setId(Integer id) { this.id = id; }public String getName() { return name; }public void setName(String name) { this.name = name; }public String getPlone() { return plone; }public void setPlone(String plone) { this.plone = plone; }public String getAddress() { return address; }public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "Student{" + "id=" + id + ", name='" + name + '\'' + ", phone=" + plone + ", address='" + address + '\'' + '}';}
}
src/main/resources/spring-01.xml
<?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 https://www.springframework.org/schema/context/spring-context.xsd">读取外部配置文件,只能读取后缀名是“.properties”格式的别的位置就能使用配置文件的变量了,格式:value = ${key}可以添加多个配置文件,用逗号隔开即可:context:property-placeholder location="classpath:jdbc.properties,classpath:其他配置"<context:property-placeholder location="classpath:jdbc.properties" /><!-- spring-01.xml是配置文件的方式,测试jdbcTemplate的使用 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><!--<property name="url" value="jdbc:mysql:///my_study" /> --><property name="url" value="${atguitu.url}" /><!--<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> --><property name="driverClassName" value="${atguigu.driver}" /><!--<property name="username" value="root" /> --><property name="username" value="${atguigu.username}" /><!--<property name="password" value="root" /> --><property name="password" value="${atguigu.password}" /></bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource" /></bean></beans>
JdbcTemplateTest.java
public void testForXml() {创建Ioc容器ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-01.xml");获取jdbcTemplate对象JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);进行数据库的crud1、插入、删除、修改String sql = "insert into my_user (name, pwd, plone, address) values (?,?,?,?)";int rows = jdbcTemplate.update(sql, "三狗子", "8899", "158339994", "海南省");System.out.println("rows=" + rows); // rows=12、查询单条数据jdbcTemplate.queryForObject()介绍如下:参数1:sql语句参数2:RowMapper,列名和属性名的映射接口参数3:Object...param 可变参数 占位符的值返回值是 rowMapper指定的对象sql = "select * from my_user where id = ?";// 不使用拉姆达表达式Student student = jdbcTemplate.queryForObject(sql, new RowMapper<Student>() {@Overridepublic Student mapRow(ResultSet rs, int rowNum) throws SQLException {rs:结果集,rowNum:行数rs结果集中获取的列的值,赋值给实体类对象即可,怎样赋值呢?如下:Student student = new Student();student.setId(rs.getInt("id"));student.setName(rs.getString("name"));student.setPlone(rs.getString("plone"));student.setAddress(rs.getString("address"));return student;}}, 1);System.out.println("student= " + student); // student= Student{id=1, name='张三', phone=1583331, address='北京市'}// 使用拉姆达表达式Student student2 = jdbcTemplate.queryForObject(sql, (rs, rowNum) -> {Student stu = new Student();stu.setId(rs.getInt("id"));stu.setName(rs.getString("name"));stu.setPlone(rs.getString("plone"));stu.setAddress(rs.getString("address"));return stu;}, 2);System.out.println("student2= " + student2); // student2= Student{id=2, name='李四', phone=158695, address='上海市'}3、查询所有的数据sql = "select id, name, pwd, plone, address from my_user";List<Student> studentList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Student>(Student.class));System.out.println("studentList= " + studentList);}