一、用Spring中的JdbcTemplate操作数据库

  在MySQL中准备一个user表,表中增加一条假数据

  

  用Spring中的JdbcTemplate操作数据库,在JdbcTemplate中实现增删改查操作

    //增
void saveUser(User u); //删
void deleteUserById(Integer id); //改
void updateUser(User u); //查
//根据id查找用户
User selectUserById(Integer id); //查找全部用户List
List<User> selectAllUser(); //查找用户数量
Integer selectUserCount();

package com.Gary.bean;

public class User {

    private Integer u_id;
private String u_username;
private String u_password; public Integer getU_id() {
return u_id;
}
public void setU_id(Integer u_id) {
this.u_id = u_id;
}
public String getU_username() {
return u_username;
}
public void setU_username(String u_username) {
this.u_username = u_username;
}
public String getU_password() {
return u_password;
}
public void setU_password(String u_password) {
this.u_password = u_password;
}
@Override
public String toString() {
return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + "]";
} }

User.java

package com.Gary.dao;

import java.util.List;

import com.Gary.bean.User;

public interface UserDao {

    //增
void saveUser(User u); //删
void deleteUserById(Integer id); //改
void updateUser(User u); //查
//根据id查找用户
User selectUserById(Integer id); //查找全部用户List
List<User> selectAllUser(); //查找用户数量
Integer selectUserCount(); }

UserDao.java

package com.Gary.dao;

import java.beans.PropertyVetoException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import com.Gary.bean.User;
import com.mchange.v2.c3p0.ComboPooledDataSource; public class UserDaoImpl implements UserDao { JdbcTemplate jt = new JdbcTemplate(dataSource); private static ComboPooledDataSource dataSource; static {
//配置c3p0
try {
//使用c3p0链接数据库
dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
dataSource.setUser("root");
dataSource.setPassword("123456");
} catch (PropertyVetoException e) { e.printStackTrace();
}
} //保存用户
@Override
public void saveUser(User u) {
String sql = "insert into user values(null,?,?)";
jt.update(sql,u.getU_username(),u.getU_password()); } //根据id删除用户
@Override
public void deleteUserById(Integer id) {
String sql = "delete from user where u_id = ?";
jt.update(sql,id);
} //更新用户
@Override
public void updateUser(User u) {
String sql= "update user set u_username =? , u_password = ?where u_id =?";
jt.update(sql,u.getU_username(),u.getU_password(),u.getU_id());
} //根据id查询一个用户
@Override
public User selectUserById(Integer id) {
String sql = "select * from user where u_id = ?";
User user = jt.queryForObject(sql, new RowMapper<User>() { @Override
public User mapRow(ResultSet rs, int index) throws SQLException {
User u = new User();
u.setU_id(rs.getInt("u_id"));
u.setU_username(rs.getString("u_username"));
u.setU_password(rs.getString("u_password")); return u;
} },id); return user;
} //查询用户列表
@Override
public List<User> selectAllUser() {
String sql= "select * from user";
List<User> list = jt.query(sql, new RowMapper<User>() { @Override
public User mapRow(ResultSet rs, int index) throws SQLException {
User u = new User();
u.setU_id(rs.getInt("u_id"));
u.setU_username(rs.getString("u_username"));
u.setU_password(rs.getString("u_password")); return u;
} }); return list;
} @Override
public Integer selectUserCount() {
String sql = "select count(*) from user";
return jt.queryForObject(sql, Integer.class); } }

UserDaoImpl.java

  根据id查找用户

package com.Gary.test;

import org.junit.Test;

import com.Gary.bean.User;
import com.Gary.dao.UserDao;
import com.Gary.dao.UserDaoImpl; public class JdbcTest { @Test
public void Test1() {
UserDao dao = new UserDaoImpl();
//根据id查询用户
User u = dao.selectUserById(1);
System.out.println(u); } }

JdbcTest.java

  保存用户

package com.Gary.test;

import org.junit.Test;

import com.Gary.bean.User;
import com.Gary.dao.UserDao;
import com.Gary.dao.UserDaoImpl; public class JdbcTest2 { @Test
public void Test2() {
UserDao dao = new UserDaoImpl();
//添加一个新的数据
User u = new User();
u.setU_username("newGary");
u.setU_password("123123");
dao.saveUser(u); } }

JdbcTest2.java

二、使用Spring容器来管理JdbcTemplate

package com.Gary.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.Gary.bean.User;
import com.Gary.dao.UserDao; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTest3 { @Resource(name = "userDao")
private UserDao ud; @Test
public void Test3() {
//添加一个新的数据
User u = new User();
u.setU_username("666sGary");
u.setU_password("666");
ud.saveUser(u); } }

JdbcTest3.java

<?xml version="1.0" encoding="UTF-8"?>
<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-4.3.xsd"> <!-- 依赖关系 dao -> jdbcTemplate -> dataSource --> <!-- 配置 dataSource -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm_spring"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean> <!-- jdbcTemplate -->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean> <!-- dao -->
<bean name="userDao" class="com.Gary.dao.UserDaoImpl">
<property name="jt" ref="jdbcTemplate"/>
</bean> </beans>

applicationContext.xml

最新文章

  1. Windows Phone Toolkit 的 DatePicker 控件本地化的问题
  2. linux ps命令,查看进程cpu和内存占用率排序(转)
  3. 相克军_Oracle体系_随堂笔记005-Database buffer cache
  4. 【VS技巧】根据XML自动生成类型
  5. 聊聊CSS postproccessors
  6. python: 命令选项及归类
  7. asp实现关键词不区分大小写搜索并高亮显示
  8. favicon支持的图片格式
  9. SQLServer优化资料整理(一)
  10. Easy UI treegrid 分页实例
  11. Debian 8开启sftp服务
  12. 【转载】解决refreshing gradle project 和Building gradle project info 一直卡住\速度慢
  13. Clustering[Spectral Clustering]
  14. HTML添加图像和超链接
  15. 下拉选择插件select2赋值、创建、清空
  16. Java的参数传递是「按值传递」还是「按引用传递」?
  17. FINAL视频预发布
  18. android 线程间的通信
  19. 【初探】java性能火焰图的生成
  20. 深度学习(十六) ReLU为什么比Sigmoid效果好

热门文章

  1. 重构与反思-&lt;重构代码的7个阶段&gt;有感
  2. java毫秒级别定时器
  3. Flutter 自定义绘制 View
  4. 3.Redis数据类型
  5. [LeetCode] 17. 电话号码的字母组合 ☆☆☆(回溯) ###
  6. js 实现复制功能的四种方式的优劣对比
  7. 【Day4】4.Request对象之Get请求与URL编码
  8. 在linux中安装VM tools
  9. usb相关
  10. MVVM框架(Vue)