栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring5框架学习总结二 【JdbcTemplate、事物管理、Spring5新特性】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring5框架学习总结二 【JdbcTemplate、事物管理、Spring5新特性】

目录:

四、JdbcTemplate

1. 准备工作2. 添加、修改、删除3. 查询4. 批量操作 五、事务管理

1. 注解声明式事务管理2. xml声明式事务管理3. 完全注解声明式事务管理 六、Spring5新特性

1. 日志

四、JdbcTemplate 1. 准备工作

① 导入jar包;

② 在spring配置文件中配置数据连接池;

   
   
       
       
       
       
   

③ 配置JdbcTemplate对象,注入DataSource;

   
   
   
   
       
       
   

④ 创建service和dao类,在dao注入jdbcTemplate对象;

@Repository(value = "userService")
public class UserDaoImpl implements UserDao{
   // 注入JdbcTemplate对象
   @Autowired
   private JdbcTemplate jdbcTemplate;
}

@Service
public class UserService {
   // 注入UserDao
   @Autowired
   private UserDao userDao;
}
2. 添加、修改、删除
 //实现添加用户
@Override
public void add(User user) {

    String sql1 = "insert into user values(?,?)"; //添加sql语句
    String sql2 = "update user set name=? where id=?"; //修改sql语句
    String sql3 = "delete from user where id=?"; //删除sql语句
    
    Object []args = {user.getId(), user.getName()}; //参数
    
    int count = jdbcTemplate.update(sql1, args);
    System.out.println("影响行数: "+count);
}
3. 查询

查询返回某个值:

//查询记录条数
@Override
public void selectCount() {
    String sql = "select count(*) from user"; //sql语句
    int count = jdbcTemplate.queryForObject(sql,Integer.class);
    System.out.println("行数: "+count);
}

查询返回对象:

@Override
public UserfindUserById(int id) {
   String sql = "select * from user where id=?"; //sql语句
   User user = jdbcTemplate.queryForObject(sql, 
   				new BeanPropertyRowMapper(User.class), id);
   System.out.println(user);
   return user;
}

查询返回集合:

@Override
public List findUserAll() {
    String sql = "select * from user"; //sql语句
    List users = jdbcTemplate.query(sql, new BeanPropertyRowMapper(User.class));
    return users;
}
4. 批量操作

批量添加、修改、删除:

// 批量添加 修改 用户
@Override
public void batchAddUser(List batchArgs) {
    String sql1 = "insert into user values(?,?)"; //批量添加sql语句
    String sql2 = "update user set name=? where id=?"; //批量修改sql语句
    
    int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    System.out.println(Arrays.toString(ints));
}

// 批量删除
Object[] o1={"1"};
batchArgs.add(o1);
String sql = "delete from uesr where id=?";
jdbcTemplate.batchUpdate(sql,batchArgs);

五、事务管理

事务:数据库操作最基本单元,逻辑上一组操作,如果有一个过程失败则所有操作失败。

事务四大特性:
① 原子性:过程不可分割;
② 一致性:操作之前和操作以后总量是不变的;
③ 隔离性:各个操作相互不影响;
④ 持久性:操作完成,持久修改;

Spring事务管理介绍:
① 事务一般添加到JavaEE三层结构里面的Service层(业务逻辑层);
② 两种方式管理事务操作:编程式事务管理 和 声明式事务管理(基于注解或基于xml);
③ 在Spring进行声明式事务管理,底层使用的就是Aop;

1. 注解声明式事务管理

步骤:
① 在spring配置文件中配置事务管理器;



   
   

② 在spring配置文件中开启事务注解;

xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">



③ 在service类上面添加事务注解@Transactional;
添加在类上面:类里面所有方法有效;
添加在方法上面:此方法有效;

@Transactional参数介绍:
① propagation:事务传播行为;
② ioslation:事务隔离级别;可决解脏读、不可重复读、虚读等问题。
③ timeout:超时时间;
④ readOnly:是否只读;
⑤ rollbackFor:设置出现哪些异常回滚;
⑥ noRollbackFor:设置出现哪些异常不回滚;

2. xml声明式事务管理

① 配置事务管理器;



   
   

② 配置通知;



    
    
      	
        
    

③ 配置切入点和切面;

   
   
       
       
       
       
   
3. 完全注解声明式事务管理
@Configuration //配置类
@ComponentScan(basePackages = "com.nzs.spring5") //开启扫描
@EnableTransactionManagement //开启事务
public class TxConfig {
    //创建数据库连接池
    @Bean
    public DruidDataSource getDruidDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql:///user_db");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        return dataSource;
    }
    //创建JdbcTemplate对象
    public JdbcTemplate getJdbcTemplate(DataSource dataSource){//参数会在ioc容器中找到
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        //注入jdbcTemplate
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;
    }
    //创建事务管理器对象
    public DataSourceTransactionManager getDataSourceTransactionManager(DataSource dataSource){
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }
}

六、Spring5新特性 1. 日志

① Spring5已经移除Log4jConfigListtener,官方建议使用Log4j2,Spring5整合了Log4j2;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763155.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号