废话少说,直接上例子
1.搭建环境
就是导包和一些配置文件,这里就不多说了,可以参考附件。
注意:mysql的innodb引擎才知道事务回滚
2.编码
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
dao接口
public interface UserDAO {
public User findById(int id) throws Exception;
public void addUser(User user) throws Exception;
public void deleteUser(User user);
public void updateUser(User user);
public void batchAddUser(List<User> users);
public void createTable(String sql);
public void test(User user);
}
dao实现
@Transactional
@Component("UserDAO")
public class UserDAOImpl implements UserDAO {
@Resource
private JdbcTemplate jdbcTemplate;
@Override
public User findById(int id) throws Exception {
String sql = "select id,username from user where id = ?";
Object[] params = new Object[] { new Integer(id) };
User user = jdbcTemplate.queryForObject(sql, params, new UserRowMapper());
return user;
}
class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNumber) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
return user;
}
}
@Override
@Transactional//(rollbackFor=Exception.class)默认为runtimeException才回滚
public void addUser(User user) throws Exception {
String sql = "insert into user(username,password) values(?,?)";
List<String> list = new ArrayList<String>();
list.add(user.getUsername());
list.add(user.getPassword());
jdbcTemplate.update(sql, list.toArray());
//throw new Exception("error");
}
@Override
public void deleteUser(User user) {
String sql = "delete from user where id=?";
List<String> list = new ArrayList<String>();
list.add(user.getId()+"");
jdbcTemplate.update(sql, list.toArray());
}
@Transactional(rollbackFor=Exception.class)
public void test(User user){
String sql = "delete from user where id="+user.getId();
jdbcTemplate.update(sql);
sql = "update user set username='aa',password='bb' where id="+user.getId();
jdbcTemplate.update(sql);
}
@Override
@Transactional//(rollbackFor=Exception.class)
public void updateUser(User user) {
String sql = "update user set username=?,password=? where id=?";
List<String> list = new ArrayList<String>();
list.add(user.getUsername());
list.add(user.getPassword());
list.add(user.getId()+"");
jdbcTemplate.update(sql, list.toArray());
}
@Override
@Transactional//(rollbackFor=Exception.class)
public void batchAddUser(final List<User> users) {
String sql = "insert into user (username,password) values(?,?)";
BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
public int getBatchSize() {
return users.size(); //这个方法设定更新记录数,通常List里面存放的都是我们要更新的,所以返回list.size();
}
public void setValues(java.sql.PreparedStatement ps, int i)
throws SQLException {
User user = users.get(i);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
}
};
jdbcTemplate.batchUpdate(sql, setter);
}
@Override
public void createTable(String sql) {
jdbcTemplate.execute(sql);
}
}
测试类
package test.dao;
import java.util.ArrayList;
import java.util.List;
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 test.model.User;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:lms-admin.xml" })
public class UserDAOImpl {
//private static BeanFactory factory = new ClassPathXmlApplicationContext("lms-admin.xml");
//UserDAO userDAO = (UserDAO) factory.getBean("UserDAO");
@Resource
UserDAO userDAO;
@Test
public void testCreate() throws Exception{
String sql = "create table user(id int(20) primary key auto_increment,username varchar(20),password varchar(20));";
userDAO.createTable(sql);
}
@Test
public void testSearch() throws Exception{
User user = userDAO.findById(6);
System.out.println(user.getUsername());
}
@Test
public void testSave() throws Exception{
User user = new User();
//user.setId(2);
user.setPassword("aaa");
user.setUsername("zs");
userDAO.addUser(user);
}
@Test
public void testDelete() throws Exception{
User u = userDAO.findById(5);
userDAO.deleteUser(u);
}
@Test
public void testUpdate() throws Exception{
User u = userDAO.findById(5);
u.setPassword("lkasjdflkasd");
u.setUsername("asdofjiweif");
userDAO.updateUser(u);
}
@Test
public void testBatchSave() throws Exception{
List<User> users = new ArrayList<User>();
User user1 = new User();
user1.setPassword("aaa");
user1.setUsername("zs");
User user2 = new User();
user2.setPassword("aaa");
user2.setUsername("张三");
users.add(user1);
users.add(user2);
userDAO.batchAddUser(users);
}
@Test
public void testRoll() throws Exception{
User user = userDAO.findById(5);
userDAO.test(user);
}
}
- 大小: 9.5 KB
分享到:
相关推荐
strut2+spring+springjdbctemplate做的简易登录系统
主要介绍了SpringBoot2.x入门教程之引入jdbc模块与JdbcTemplate简单使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
JavaEE JdbcTemplate的简单示例
简单的jdbcTemplate预编译、回调等
当hql等查询方式不能满足性能或灵活性的要求,必须使用SQL时,大家有三... JDBCTemplate的使用很简单,只要在ApplicationContext文件里定义一个jdbcTemplate节点,POJO获得注入后可以直接执行操作,不需要继承什么基类
https://blog.csdn.net/qq_43499543/article/details/117334868
一个简单的spring的jdbcTemplate扩展
工程实现的是Spring+SpringMVC+JDBCTemplate简单用户管理功能,界面十分粗糙,只是演示功能。
一个非常简单基于注解的Spring JdbcTemplate,供初学者参考用。
简单介绍如何使用Spring Boot使用JdbcTemplate与MySQL进行数据库操作
spring jdbctemplate组件的简单实例。可以直接运行该实例来学习spring的jdbctemplate。处于初学者,或开发互联网性能要求较高的比较有料。
一个简单易用可对象操作基于Spring JdbcTemplate的JDBC帮助包
使用druid连接池,内附简单的增删改查方法,使用REST风格,提供MySQL和Oracle,2种配置方式,此项目使用MySQL数据库,修改数据库信息和SQL语句即可使用。
本项目是基于Spring MVC和JdbcTemplate开发的简易设备资产管理系统设计源码,主要使用Java进行开发。项目共包含147个文件,其中XML配置文件86个,Java源代码文件46个,META-INF文件4个,项目构建文件iml和properties...
这个本人经常精心调试出来的示例,import 进来就可以使用,例子简单,附有数据库脚本 Struts2+Spring+EasyUI+JDBCTemplate学习源码
使用strut2+spring+jdbctemplate+ajax(jquery,ajaxanywhere)去实现的一个简易用户管理,和留言功能
`Spring`框架提供的`JDBC`简单封装,它提供了一个`JDBCTemplate`对象 此压缩包是JDBC锁需要使用的jar包,有需求的请使用
案例采用了注解方式,实现了用户添加,分页显示,简单易懂,适合是初学者,数据库附加在工程中了