spring入门学习--JdbcTemplate

概念和准备

什么是JdbcTemplate

Spring框架对JDBC进行封装,使用JdbcTemplate可以实现对数据库进行操作--增删改查

案例演示向数据库中插入语句操作

1、引入jar包
](https://img-blog.csdnimg.cn/7f63e2cb32c6451a81dc28f77e6bd766.png)
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);
    }

----完结-----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值