创建一个 Spring 应用程序
步骤 | 描述 |
---|---|
1 | 项目名:SpringDemo |
2 | 添加必须的spring库 |
3 | spring JDBC指定添加新增库: mysql-connector-java.jar , org.springframework.jdbc.jar 和org.springframwork.transaction.jar. |
4 | 创建UserDao接口,及实现类 |
5 | 创建UserService接口,及实现类 |
6 | 在src文件下创建spring-jdbc.xml文件,配置数据源DataSource |
7 | 配置jdbc.properties文件,连接mysql数据库资源文件 |
8 | 创建所有Bean和所需要的Test类 |
导入需要的jar包
spring-jdbc.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">
<!--使用注解注入-->
<context:component-scan base-package="bdqn.springJDBC" />
<!-- 配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 数据库驱动-->
<property name="driverClassName" value="${driver}"></property>
<!-- 连接数据库的URL-->
<property name="url" value="${url}"/>
<!-- 连接数据库的用户名-->
<property name="username" value="${user}"/>
<!-- 连接数据库的密码-->
<property name="password" value="${password}"/>
</bean>
<!-- 指定引入文件地址-->
<context:property-placeholder location="classpath:jdbc.properties" ></context:property-placeholder>
<!-- 配置jdbc模板 注入数据源-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
jdbc.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/users
user=root
password=root
创建UserDao接口
public interface UserDao {
/**
* 创建用户表
*/
void createUserTable();
/**
* 查询用户名
*/
void checkUname( Integer uid);
/**
* 修改用户名
* @param newName
* @param oldName
*/
void updateUserName(String newName,String oldName);
/**
* 添加1个用户信息
* @param uname
* @param upwd
*/
void addUser(String uname,String upwd);
/**
* 删除一个用户信息
* @param uname
*/
void deleteUser(String uname);
/**
* 查询一个map集合的用户信息
* @return
*/
Map<String, Object> queryUserMap();
/**
* 查询一个list集合的用户信息
* @return
*/
List queryUserList();
/**
* 查询指定用户信息
* @param uname
* @return
*/
User queryUser(String uname);
}
实现接口
/**
* 使用注解注入dao层
*/
@Repository
public class UserDaoImpl implements UserDao {
//@Resource 注解不能注解static对象属性
@Resource
JdbcTemplate jdbcTemplate ;
……………………………………………………
}
在实现类UserDaoImpl中使用JdbcTemplate 的excute方法创建表User
/**
* 创建用户表
*/
@Override
public void createUserTable() {
String sql="CREATE TABLE `user`(\n" +
"\tuid INT(4),\n" +
"\tuname VARCHAR(50),\n" +
"\tupwd VARCHAR(20)\n" +
");";
jdbcTemplate.execute(sql);
}
通过uid查询指定的Uname
/**
* 查询用户名
*/
@Override
public void checkUname( Integer uid) {
String sql="SELECT uname FROM USER WHERE uid=?;";
String uname = jdbcTemplate.queryForObject(sql, new Object[]{uid}, String.class);
System.out.println("查询的姓名为:"+uname);
}
修改用户名
/**
* 修改用户名
* @param newName
* @param oldName
*/
@Override
public void updateUserName( String newName, String oldName) {
String sql="\n" +
"UPDATE USER SET uname=? WHERE uname=?;";
// 方法一:直接添加修改的args
int update = jdbcTemplate.update(sql, "hh", "lhh");
//方法二:使用数组对象存放修改参数
Object[] objects=new Object[]{"hh","lhh"};
int update1 = jdbcTemplate.update(sql, objects);
System.out.println("①返回修改行数:"+update);//①返回修改行数:1
System.out.println("②返回修改行数:"+update1);//②返回修改行数:0
}
添加一行用户信息
/**
* 添加1个用户信息
* @param uname
* @param upwd
*/
@Override
public void addUser(String uname, String upwd) {
String sql="INSERT INTO `user` VALUE(NULL,?,?); ";
int update = jdbcTemplate.update(sql, uname, upwd);
System.out.println("返回添加记录数:"+update);
}
删除用户
/**
* 删除一个用户信息
* @param uname
*/
@Override
public void deleteUser( String uname) {
String sql="DELETE FROM USER WHERE uname= ? ;";
int update = jdbcTemplate.update(sql, uname);
System.out.println("返回删除记录数:"+update);
}
查询一个map集合的用户信息
/**
* 查询一个map集合的用户信息
* @return
*/
@Override
public Map<String, Object> queryUserMap() {
String sql="SELECT * FROM USER ;";
Map<String, Object> objectMap = jdbcTemplate.queryForMap(sql);
return objectMap;
}
查询一个list集合的用户信息
/**
* 查询一个list集合的用户信息
* @return
*/
@Override
public List queryUserList() {
String sql="SELECT * FROM USER;";
RowMapper rowMapper=new BeanPropertyRowMapper(User.class);
List l = jdbcTemplate.query(sql, rowMapper);
return l;
}
查询出指定用户user
/**
* 查询指定用户信息
* @param uname
* @return
*/
@Override
public User queryUser( String uname) {
String sql="SELECT * FROM USER WHERE uname = ?;";
RowMapper mapper=new BeanPropertyRowMapper(User.class);
User user = (User) jdbcTemplate.queryForObject(sql, mapper, uname);
return user;
}
测试类Test
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("spring-jdbc.xml");
UserDaoImpl userDaoImpl = context.getBean("userDaoImpl", UserDaoImpl.class);
List list = userDaoImpl.queryUserList();
for (int i = 0; i < list.size(); i++) {
System.out.println("第"+i+"个user:"+list.get(i));
}
}
输出结果为:
第0个user:User{uid=1, uname='admin', upwd='a'}
第1个user:User{uid=5, uname='hh', upwd='a'}