package com.gaj.entity;
import java.util.Date;
public class UserInfo {
private Integer uid;
private String uname;
private Date regDate;
private Double money;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
@Override
public String toString() {
return "UserInfo [uid=" + uid + ", uname=" + uname + ", regDate=" + regDate + ", money=" + money + "]";
}
}
package com.gaj.dao;
import java.util.List;
import com.gaj.entity.UserInfo;
public interface UserDAO {
public List<UserInfo> findAllUsers() throws Exception;
}
package com.gaj.dao.impl;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.gaj.dao.UserDAO;
import com.gaj.entity.UserInfo;
public class UserDAOImpl implements UserDAO {
private QueryRunner qr;
public void setQr(QueryRunner qr) {
this.qr = qr;
}
@Override
public List<UserInfo> findAllUsers() throws Exception {
// 设置返回值
List<UserInfo> users = null;
// 编写sql
String sql = "select u_id uid,u_name uname,u_regdate regDate,u_money money from user_info";
// 执行sql
users = qr.query(sql, new BeanListHandler<>(UserInfo.class));
// 返回
return users;
}
}
package com.gaj.service;
import java.util.List;
import com.gaj.entity.UserInfo;
public interface UserService {
public List<UserInfo> findAllUsers() throws Exception;
}
package com.gaj.service.impl;
import java.util.List;
import com.gaj.dao.UserDAO;
import com.gaj.entity.UserInfo;
import com.gaj.service.UserService;
public class UserServiceImpl implements UserService {
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
@Override
public List<UserInfo> findAllUsers() throws Exception {
return userDAO.findAllUsers();
}
}
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/user_db?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
bean>
<bean id="qr" class="org.apache.commons.dbutils.QueryRunner">
<constructor-arg name="ds" ref="dataSource" />
bean>
<bean id="userDAO" class="com.gaj.dao.impl.UserDAOImpl">
<property name="qr" ref="qr" />
bean>
<bean id="userService" class="com.gaj.service.impl.UserServiceImpl">
<property name="userDAO" ref="userDAO" />
bean>
beans>
package com.gaj.test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.gaj.entity.UserInfo;
import com.gaj.service.UserService;
public class SpringTest {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
@Test
public void query() throws Exception{
UserService userService = context.getBean("userService", UserService.class);
List<UserInfo> users = userService.findAllUsers();
users.forEach(System.out::println);
}
}
package com.gaj.dao.impl;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gaj.dao.UserDAO;
import com.gaj.entity.UserInfo;
@Component
public class UserDAOImpl implements UserDAO {
@Autowired
private QueryRunner qr;
@Override
public List<UserInfo> findAllUsers() throws Exception {
// 设置返回值
List<UserInfo> users = null;
// 编写sql
String sql = "select u_id uid,u_name uname,u_regdate regDate,u_money money from user_info";
// 执行sql
users = qr.query(sql, new BeanListHandler<>(UserInfo.class));
// 返回
return users;
}
}
package com.gaj.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gaj.dao.UserDAO;
import com.gaj.entity.UserInfo;
import com.gaj.service.UserService;
@Component
public class UserServiceImpl implements UserService {
@Autowired
private UserDAO userDAO;
@Override
public List<UserInfo> findAllUsers() throws Exception {
return userDAO.findAllUsers();
}
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.xsd">
<context:component-scan base-package="com.gaj.dao" />
<context:component-scan base-package="com.gaj.service" />
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/user_db?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
bean>
<bean id="qr" class="org.apache.commons.dbutils.QueryRunner">
<constructor-arg name="ds" ref="dataSource" />
bean>
beans>
package com.gaj.test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.gaj.entity.UserInfo;
import com.gaj.service.UserService;
public class SpringTest {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
@Test
public void query() throws Exception{
UserService userService = context.getBean(UserService.class);
List<UserInfo> users = userService.findAllUsers();
users.forEach(System.out::println);
}
}
XML的另外一种配置方案,它能够减少编程人员在XML中配置的bean标签的数量,从而简化XML配置。
主要用途:配置bean
1. 创建类
@Component相当于在XML中配置
@Component(“person”)相当于在XML中配置
@Component注解可以将一个类变成bean,但是语义不够明显,为此@Component注解有3个子注解:@Repository、@Service、@controller。
附注:如果想要将创建的bean单例模式改成多例模式,在类上方添加@Scope(“prototype”)即可
2. 包扫描器
需要在xml文件中声明引入功能标签
xmlns:context="http://www.springframework.org/schema/context"
添加标签的xsd文件
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
配置包扫描器
<context:component-scan base-package="*.*.dao" />
<context:component-scan base-package="*.*.service" />
3. 注入属性
@Autowired注解可以按类型注入相关的属性值,但是按类型注入一个类型只能出现一个bean,假如说你按类型注入的时候报错了,可以按照BeanID的形式指定需要注入的bean