jdbcTemplate简单使用

废话少说,直接上例子
[b]1.搭建环境[/b]
就是导包和一些配置文件,这里就不多说了,可以参考附件。
注意:mysql的innodb引擎才知道事务回滚
[b]2.编码[/b]

[img]http://dl2.iteye.com/upload/attachment/0091/8601/ab4fca7a-dc17-3d36-9633-e333b92fe23a.png[/img]


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);

}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Spring Boot的JdbcTemplate之前,需要在项目的依赖中添加Spring Boot JDBC模块的引用。在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> ``` 接下来,你可以创建一个数据访问层的类,使用JdbcTemplate来执行SQL操作。以下是一个简单的示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; @Repository public class MyRepository { private final JdbcTemplate jdbcTemplate; @Autowired public MyRepository(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void insertData(String data) { String sql = "INSERT INTO my_table (column_name) VALUES (?)"; jdbcTemplate.update(sql, data); } // 其他数据操作方法... } ``` 在上述示例中,我们通过@Autowired注解将JdbcTemplate注入到MyRepository类中。然后,可以使用jdbcTemplate对象执行SQL操作,比如插入数据。 请注意,上述示例假设已经在配置文件中正确配置了数据源信息,包括数据库的URL、用户名和密码等。如果没有配置,可以在application.properties文件中添加相关配置。 这只是一个简单的示例,JdbcTemplate还提供了许多其他强大的功能,如查询数据、更新数据、批量操作等。你可以根据具体的需求来使用JdbcTemplate提供的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值