JDBC Temp late

JDBCTempLate

  1. 添加数据
@Test
    public void  test(){
        String sql = "insert into student values(?,?,?)";
        //这里是不需要提交事务的直接就可以
        jdbcTemplate.update(sql,null,"赵例",99);
    }
  1. 修改数据
 /**
     * 修改都是在update这个方法中实现前面是sql后面是一个参数的列表
     */
    @Test
    public void test_one(){
        String sql = "update  t_book set book_name=?,price=?,stock=? where book_id=? ";
        jdbcTemplate.update(sql,"平凡的一生",90,110,1);
    }
  1. 删除数据
 @Test
    public void test_two(){
        String sql="delete from student where id=?";
        jdbcTemplate.update(sql,43);
        System.out.println("删除成功!");
    }
  1. 查询一行数据
    /**
     *查询的方法是queryForObject
     *设置映射关系BeanPropertyRowMapper
     *传入的参数是实体类的对象,这是查询一行的
     *这里的实体类对象就是需要查询的表的名字,并且这里的泛型可以不写
     */
    @Test
    public void test_select(){
        String sql ="select * from t_book where book_id=?";
        t_book t_book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<t_book>(t_book.class), 1);
        System.out.println(t_book.toString());

    }

请添加图片描述

  1. 查询多行数据

/**
     * 查询多行数据集合里面的泛型为数据库的实体表
     * 返回值是list集合,且泛型也是表类型
     * query方法是查询多条数据的,new BeanPropertyRowMapper这个需要传入一个表对象
     * 最后一个参数照样是参数传入的参数按照占位符来匹配
     */
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public List<t_book>  selectAll(){
        String sql = "select * from t_book";
        List<t_book> t_book = jdbcTemplate.query(sql, new BeanPropertyRowMapper(t_book.class), null);
        return  t_book;
    }

在这里插入图片描述

结合aop在这里面加入通知

  1. 加入依赖坐标,xml文件配置
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.3.1</version>
        </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.9</version>
    </dependency>

spring_jdbctmplate.xml

<!--开启基于注解的aop-->
<aop:aspectj-autoproxy/>
  1. 编写cn/zt/proxy/ascoptProxy.class
/**
 ** cn.zt.Dao.jdbcdao.*(..) 表示实现到jdbcdao的所有方法下
 * 获取的bean实例只能是在调用方法的时候才能实现通知所以去调用测试方法是不可取的行为
 * 我在这里犯了错误把他放在需要传入的类对象的代码放在一起所以注意就行了
 */
@Component
@Aspect
public class tongzhi {
    @Pointcut("execution(* cn.zt.Dao.jdbcdao.*(..))")
    public void cut(){}
//    @Order(0)
//    @AfterReturning(value = "cut()",returning = "returning_test")
//    public void returning(Object returning_test){
//        System.out.println("执行成功方法名为:"+returning_test.getClass());
//    }
    @Around(value = "cut()")
    public Object around(ProceedingJoinPoint joinPoint){
        Object proceed =null;
        try {
            System.out.println("这里是一个sql方法");
            proceed = joinPoint.proceed();
            System.out.println("返回值类型为:"+proceed.getClass());
        } catch (Throwable e) {
            System.out.println("出现异常!");
            e.printStackTrace();
        }
        return proceed;
    }
  1. 实现类cn/zt/Service/service.java
/**
 * 前面是老两样就是获取配置文件在获取对应类型的bean
 * 这里本来应该是接口的但是我是直接放在dao层的所以
 * 直接给他对象就可以了,还有就是他返回值的类型是list的t_book
 * 的数组所以在foreach中他承接列表的变量也得是t_book类型的
 */
@Component
public class service {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext ioc  = new ClassPathXmlApplicationContext("spring_jdbc.xml");
        jdbcdao bean = ioc.getBean(jdbcdao.class);
        List<t_book> t_books = bean.selectAll();
        for (t_book t:t_books) {
            System.out.println(t.toString());
        }
    }
}

有一点忘记写了前面的增删改查这四个是在jdbctmplate封装的jiunt里面写的,代码贴在下面

//@RunWith是配置环境,@ContextConfiguration获取配置文件
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring_jdbc.xml")
@Component
public class JDBCTempLateTest {
//自动装配jdbctemplate的数据需要开启自动装配
@Autowired
    private JdbcTemplate jdbcTemplate;
//    ApplicationContext iop = new ClassPathXmlApplicationContext("spring_jdbc.xml");

    @Test
    public void  test(){
        String sql = "insert into student values(?,?,?)";
        //这里是不需要提交事务的直接就可以
        jdbcTemplate.update(sql,null,"赵添",99);
    }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值