一.使用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.propertiesurl=jdbc:mysql://localhost:3306/news
driverClassName=com.mysql.jdbc.Driver
userName1=root
password=123456
这篇博客介绍了如何在Spring框架中使用JDBC连接数据库,包括在pom.xml中添加必要的依赖库,配置spring.xml文件以及控制器层的设置。
461

被折叠的 条评论
为什么被折叠?



