Spring的简单入门(二)之jdbc

这篇博客介绍了如何在Spring框架中使用JDBC连接数据库,包括在pom.xml中添加必要的依赖库,配置spring.xml文件以及控制器层的设置。

一.使用jdbc连接数据库

1.在pom.xml文件中添加jdbc的架包和数据库的架包

	<!-- 添加jdbc的架包 -->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-jdbc</artifactId>
  		<version>4.3.12.RELEASE</version>
  	</dependency>
  		<!-- 加载数据库的架包 -->
  	<dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.26</version>
  	</dependency>

2.创建jdbc.properties的文件写入四要素

url=jdbc:mysql://localhost:3306/news
driverClassName=com.mysql.jdbc.Driver
userName1=root
password=123456
3.在spring.xml中配置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-4.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.2.xsd">
     
     <!-- 使用bean来定义读取资源文件
    	优先读取bean定义的
    	context命名空间 优先读取系统资源
     -->
        <context:property-placeholder location="classpath:/less02/jdbc/jdbc.properties"/> 
	<!--数据源只是为了获取链接 
	${username}是个关键字 默认是系统的用户名 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="url" value="${url}"></property>
		<property name="username" value="${userName1}"></property>
		<property name="password" value="${password}"></property>
		<property name="driverClassName" value="${driverClassName}"></property>
	</bean>
	<!-- 封装一些操作的方法 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
	<property name="dataSource" ref="dataSource"></property>
	</bean>

</beans>

4.简单的测试

package less02.jdbc;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class TestCotainer {
	
	static JdbcTemplate jt;
	static{
		//初始化容器
		ApplicationContext context= new ClassPathXmlApplicationContext("classpath:/less02/jdbc/spring.xml");
		 jt = (JdbcTemplate)context.getBean("jdbcTemplate");
	}
	public static void main(String[] args) throws SQLException {
		query("select * from mynews");
		
	}
	//查询数据
	public static void query(String sql){
		List<Map<String,Object>> list=jt.queryForList(sql);
		System.out.println(list.size());
	}
}
二.Spring 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-4.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.2.xsd">
     
     <bean id="a" class="less02.cycle.A" init-method="ini" destroy-method="des"></bean>

</beans>
package less02.cycle;

import org.springframework.stereotype.Component;

/*
 * 注解@Component 让spring容器 自动实例化当前类
 * ID=类名首字母小写
 */
@Component
public class A {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public void ini(){
		System.out.println("初始化");
	}
	public void des(){
		System.out.println("结束");
	}
}

测试

package less02.cycle;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class TestCotainer {
	static ClassPathXmlApplicationContext context;
	static JdbcTemplate jt;
	static{
		 context= new ClassPathXmlApplicationContext("classpath:/less02/cycle/spring.xml");
		
	}
	public static void main(String[] args) {
		context.close();
	}
	
}
三.自动扫描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-4.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.2.xsd">
     
     <!-- 自动扫描要扫描的类 -->
     <context:component-scan base-package="less02.anno"></context:component-scan>
    

</beans>

package less02.anno;

import org.springframework.stereotype.Component;

/*
 * 注解@Component 让spring容器 自动实例化当前类
 * ID=类名首字母小写
 * 注解都是为了产生一个bean 
 */
@Component("saber")
public class A {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public void ini(){
		System.out.println("初始化");
	}
	public void des(){
		System.out.println("结束");
	}
}

测试
package less02.anno;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class TestCotainer {
	static ClassPathXmlApplicationContext context;
	static JdbcTemplate jt;
	static{
		 context= new ClassPathXmlApplicationContext("classpath:/less02/anno/spring.xml");
		
	}
	public static void main(String[] args) {
		A a=(A)context.getBean("saber");
		System.out.println(a);
		context.close();
	}
	
}

四.mvc的简单测试

spring.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-4.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.2.xsd">
     
     <!-- 使用bean来定义读取资源文件
    	优先读取bean定义的
    	context命名空间 优先读取系统资源
     --><!--  
     	<context:exclude-filter type="assignable" expression="classpath:/less02/mvc/Mydao"></context:exclude-filter>
      	type="assignable" 排除指定的类
		type ="annotion" 表示排除某些带有指定注解的类
      	-->
      	<context:component-scan base-package="less02.mvc"></context:component-scan>
        <context:property-placeholder location="classpath:/less02/mvc/jdbc.properties"/>

</beans>


1.controller层

package less02.mvc.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import less02.mvc.service.MyService;

@Controller
public class MyController {
	@Autowired
	MyService myservice;
	public void service(String sql){
		System.out.println(myservice.query(sql));
	}
}
2.持久化层

package less02.mvc.dao;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class Mydao {
	//自动装配
	@Autowired
	private JdbcTemplate temp;
	
	public List<Map<String,Object>> queryMyResult(String sql){
		return temp.queryForList(sql);
	}
}
3.service层
package less02.mvc.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import less02.mvc.dao.Mydao;
@Service
public class MyService {
	//自动装配
	@Autowired
	private Mydao mydao;
	public String query(String sql){
		return mydao.queryMyResult(sql).toString();
	}
}

4.自动生成bean
package less02.mvc;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

@Configuration
public class MyConf {
	@Value("${url}")
	private String url;
	@Value("${driverClassName}")
	private String driverClassName;
	@Value("${userName1}")
	private String username;
	@Value("${password}")
	private String password;
	
	
	@Bean
	public JdbcTemplate jdbcTemplate(DataSource dataSource){
		return new JdbcTemplate(dataSource);
	}
	@Bean
	public DataSource dataSource(){
		DriverManagerDataSource data= new DriverManagerDataSource();
		data.setUrl(url);
		data.setDriverClassName(driverClassName);
		data.setUsername(username);
		data.setPassword(password);
		return data;
		
	}
}
5.view层
package less02.mvc;
import java.util.Scanner;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import less02.mvc.controller.MyController;

public class MyView {
	static ClassPathXmlApplicationContext context;
	
	static{
		 context= new ClassPathXmlApplicationContext("classpath:/less02/mvc/spring.xml");
	}
	private static MyController con;
	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		try{
			while(true){
				System.out.print("请输入:");
				String sql=sc.nextLine();
				con=(MyController)context.getBean("myController");
				con.service(sql);
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}finally {
			context.close();
		}
	}
}
6.jdbc.properties
url=jdbc:mysql://localhost:3306/news
driverClassName=com.mysql.jdbc.Driver
userName1=root
password=123456


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值