文章目录
概念和准备
什么是JdbcTemplate
Spring框架对JDBC进行封装,使用JdbcTemplate可以实现对数据库进行操作--增删改查
案例演示向数据库中插入语句操作
1、引入jar包
2、在spring配置文件中配置数据库连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
3、配置JdbcTemplate对象,注入DataSouce
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
4、创建mapperj接口和实现类,在实现类中调用jdbcTemplate对象
public interface UserMapper {
void InsertUser(User user);
}
@Repository
public class UserMapperImpl implements UserMapper {
//注入JdbcTemplate
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public void InsertUser() {
}
}
5、创建User实体类,封装数据。
public class User {
private Integer id;
private String username;
private String password;
}
6、在UserMapperImpl中进行数据库添加操作。
调用JdbcTemplate对象里面的update方法实现,该方法两个参数:第一个参数是SQL语句,第二个参数是可变参数,用于设置sql语句值。
@Override
public void InsertUser(User user) {
String sql = "insert into t_user values(?,?,?)";
Object[] args = {user.getId(),user.getUsername(),user.getPassword()};
jdbcTemplate.update(sql,args);
}
7、UserService类中注入UserMapper,实现对应的添加
@Service
public class UserService {
@Autowired
UserMapper mapper;
public void login(User user){
mapper.InsertUser(user);
}
}
8、测试类测试
@Test
public void testJdbcTemplate(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean01.xml");
UserService userService = context.getBean("userService", UserService.class);
User user = new User();
user.setId(null);
user.setUsername("test02");
user.setPassword("1234");
userService.login(user);
}
删除
@Override
public void removeUser(int id) {
String sql = "delete from t_user where id=?";
jdbcTemplate.update(sql,id);
}
修改
@Override
public void updateUser(User user) {
String sql = "update t_user set username=?,password=? where id=?";
Object[] args = {user.getUsername(),user.getPassword(),user.getId()};
jdbcTemplate.update(sql,args);
}
查询
返回某个值
1、查询表中有多少条记录,返回是某个值。
2、使用JdbcTemplate对象中的queryForObject方法,有两个参数:
参数1:sql语句
参数2:返回类型.class
3、案例
@Override
public int countUser() {
String sql = "select count(*) from t_user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
返回某个对象
1、根据用户名查询用户详细信息
2、使用JdbcTemplate对象中的queryForObject方法,有两个参数:
参数1:sql语句
参数2:RowMapper接口,使用接口中的方法封装返回的数据
3、案例
@Override
public User selectByName(String name) {
String sql = "select * from t_user where username=?";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), name);
return user;
}
返回集合类型
1、查询所有的用户信息
2、使用JdbcTemplate对象中的query方法,有三个参数:
参数1:sql语句
参数2:RowMapper接口,使用接口中的方法封装返回的数据
参数3:sql语句值
3、案例
@Override
public List<User> selectAll() {
String sql = "select * from t_user";
List<User> userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
return userList;
}
JdbcTemplate操作数据库—批量操作
批量添加
1、批量插入多条数据。
2、使用JdbcTemplate中的batchUpdate()方法,有两个参数:
参数1:sql语句
参数2:List集合,添加多条记录数据
3、案例
@Override
public void addUser(List<Object[]> bathArgs) {
String sql = "insert into t_user values(null,?,?)";
jdbcTemplate.batchUpdate(sql,bathArgs);
}
4、测试
@Test
public void testJdbcTemplate06(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean01.xml");
UserMapperImpl userMapperImpl = context.getBean("userMapperImpl", UserMapperImpl.class);
ArrayList<Object[]> objects = new ArrayList<>();
Object[] o1 = {"小明","xiaoming"};
Object[] o2 = {"小花","xiaohua"};
Object[] o3 = {"小华","xh"};
objects.add(o1);
objects.add(o2);
objects.add(o3);
userMapperImpl.addUser(objects);
}
批量删除
1、与插入一致,使用batchUpdate()方法
2、案例:
@Override
public void deleteUser(List<Object[]> bathArgs) {
String sql = "delete from t_user where id=?";
jdbcTemplate.batchUpdate(sql,bathArgs);
}
3、测试:
@Test
public void testJdbcTemplate07(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean01.xml");
UserMapperImpl userMapperImpl = context.getBean("userMapperImpl", UserMapperImpl.class);
ArrayList<Object[]> objects = new ArrayList<>();
Object[] o1 = {"5"};
Object[] o2 = {"6"};
objects.add(o1);
objects.add(o2);
userMapperImpl.deleteUser(objects);
}
批量修改
1、与插入一致,使用batchUpdate()方法
2、案例:
@Override
public void changeUser(List<Object[]> bathArgs) {
String sql = "update t_user set username=? where id=?";
jdbcTemplate.batchUpdate(sql,bathArgs);
}
3、测试:
@Test
public void testJdbcTemplate08(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean01.xml");
UserMapperImpl userMapperImpl = context.getBean("userMapperImpl", UserMapperImpl.class);
ArrayList<Object[]> objects = new ArrayList<>();
Object[] o1 = {"Mary","2"};
Object[] o2 = {"张三","4"};
objects.add(o1);
objects.add(o2);
userMapperImpl.changeUser(objects);
}
----完结-----