@Before:修饰的方法会在测试方法之前被自动执行

@After:修饰的方法会在测试方法执行之后自动被执行

案例1:

//预处理执行对象
public class JdbcDemo2 {
  Connection connection=null;
  PreparedStatement statement =null;
  ResultSet resultSet =null;
  //初始化加载
  @Before
  public  void init() throws Exception {
    String driver="com.mysql.jdbc.Driver";//驱动
    String url="jdbc:mysql://localhost:3306/heima";//数据库地址
    String username="root";//用户名
    String password="123";//密码
    //2.注册驱动
    Class.forName(driver);
    //3.获取数据库连接对象
    connection = DriverManager.getConnection(url, username, password);
 }
  //释放资源,先出现的后关闭,后出现的先关闭原则
  @After
  public  void destory() throws SQLException {
    if(resultSet!=null){
      resultSet.close();
   }
    if(statement!=null){
      statement.close();
   }
    if(connection!=null){
      connection.close();
   }
 }
  //查询
  @Test
  public  void query() throws SQLException {
    //1.编写sql语句
    String sql="select * from items";
    //2.执行对象
    statement=connection.prepareStatement(sql);
    //3.获取结果集
   resultSet = statement.executeQuery();
   //处理结果集
    while(resultSet.next()){
      String string = resultSet.getString("name");
      System.out.println(string);
   }
 }
  //条件查询
  @Test
  public  void queryForParam() throws SQLException {
    //1.编写sql语句
    String sql="select * from items where name like ? and price>?";
    //2.执行对象
    statement=connection.prepareStatement(sql);
   /* 3.为占位符赋值
        * SQL语句中?表示一个占位符
        * setxxx 两个参数,参数1表示占位符的索引,从1开始,如果当前sql语句中有一个?那么就是
1
        * 参数2表示为相应的占位符所赋得值
      */
    statement.setString(1,"%黑%");
    statement.setString(2,"100");
    //4.获取结果集
    resultSet = statement.executeQuery();
    //处理结果集
    while(resultSet.next()){
      String string = resultSet.getString("name");
      System.out.println(string);
   }
 }
  //DML语句
  @Test
  public void update() throws SQLException {
    //1.编写sql语句
    String sql="update items set price=?,name=? where id=?";
    //2.执行对象
    statement=connection.prepareStatement(sql);
    /* 3.为占位符赋值
    * SQL语句中?表示一个占位符
    * setxxx 两个参数,参数1表示占位符的索引,从1开始,如果当前sql语句中有一个?那么就是1
    * 参数2表示为相应的占位符所赋得值
    */
    statement.setString(1,"100");
    statement.setString(2,"张三");
    statement.setString(3,"7");
    //4.执行sql语句
    int i = statement.executeUpdate();
    System.out.println(i);
 }
}

案例2:

public class HibernateTest {
    Transaction tx = null;
    Session session = null;
    @Before
    public void init() {
        //初始化注册服务对象
        //默认加载hibernate.cfg .xmL配置文件,如果配置文件名称被修改,configure("修改的名字")
        final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
        //从元信息获取session工厂
        SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
        //从工厂创建session连接
        session = sessionFactory.openSession();
        //开启事务
        tx = session.beginTransaction();
    }
    @After
    public void destroy() {
        //提交事务
        tx.commit();
        //关闭
        session.close();
    }
    @Test
    public void test1() {
        //创建实例
        User user = new User();
        user.setName("zhangsan");
        user.setPasswd("123");
        session.save(user);
    }

}

 

posted on 2021-12-14 09:56  周文豪  阅读(998)  评论(0编辑  收藏  举报