范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Spring框架访问数据库的两种方式的小案例

  1.1 以Xml的方式访问数据库的案例
  要以xml的方式访问数据库需要用到JdbcTemplate ,因为 JdbcTemplate(jdbc的模板对象)在Spring 中提供了一个可以操作数据库的对象org.springframework.jdbc.core.JdbcTemplate。
  以xml的方式访问数据库的案例主要是以下几个步骤: (1) 创建user(对应的表)表并添加数据CREATE TABLE USER(     id INT,     username VARCHAR(20),     PASSWORD VARCHAR(20) )      INSERT INTO USER(id,username,PASSWORD) VALUES(1001,"jack","123"); INSERT INTO USER(id,username,PASSWORD) VALUES(1002,"rose","456"); INSERT INTO USER(id,username,PASSWORD) VALUES(1003,"tom","789");(2) 创建maven工程后,在pom.xml中导入依赖                                org.springframework             spring-context             5.3.10                                         org.springframework             spring-jdbc             5.3.10                                         mysql             mysql-connector-java             8.0.26                                         com.alibaba             druid             1.2.8                                         org.projectlombok             lombok             1.18.20                                         junit             junit             4.13.2             test               (3)创建实体类package com.qf.pojo;  import lombok.Data;  @Data public class User {      private Integer id;     private String name;     private String password;  }(4)创建Mapper层的UserMapper接口及UserMapperImpl实现类package com.qf.mapper;  import com.qf.pojo.User;  import java.util.List;  public interface UserMapper {     //查询所有     public List findAll(); }package com.qf.mapper.impl;  import com.qf.mapper.UserMapper; import com.qf.pojo.User; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate;  import java.util.List;  public class UserMapperImpl implements UserMapper {      //声明jdbc模板对象(jdbcTemplate),调用方法     private JdbcTemplate jdbcTemplate;      //set方法注入     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {         this.jdbcTemplate = jdbcTemplate;     }      @Override     public List findAll() {          //准备sql语句         String sql ="select id,name,password from t_user";         //调用方法,query:查询         // update: 修改         // BeanPropertyRowMapper:是jdbcTemplate内封装好的对象,保存着由查询所有方法及实体类属性得到的查询数据         List users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));          return users;     } }(5) 创建Service层的UserService接口以及UserServiceImpl实现类package com.qf.service;  import com.qf.pojo.User;  import java.util.List;  public interface UserService {     public List findAll(); }package com.qf.service.impl;  import com.qf.mapper.UserMapper; import com.qf.pojo.User; import com.qf.service.UserService;  import java.util.List;  public class UserServiceImpl implements UserService {      // 声明userMapper     private UserMapper userMapper;      // set注入     public void setUserMapper(UserMapper userMapper) {         this.userMapper = userMapper;     }      @Override     public List findAll() {         return userMapper.findAll();     } }(6)创建controller层的UserControllerpackage com.qf.controller;  import com.qf.pojo.User; import com.qf.service.UserService;  import java.util.List;  public class UserController {     //声明userService     private UserService userService;      //提供set方法,在配置文件通过set方法注入     public void setUserService(UserService userService) {         this.userService = userService;     }     //创建findAll方法     public List findAll(){         return userService.findAll();     } }(7) 创建jdbc.properties配置文件db.username = root db.password = root db.driverClassName = com.mysql.cj.jdbc.Driver db.url = jdbc:mysql://localhost:3306/java2109?serverTimezone=Asia/Shanghai&characterEncoding=UTF8(8) 创建applicationContext.xml配置文件<?xml version="1.0" encoding="UTF-8"?>                                                                                                                                                                              (9)创建测试类SpringTestpackage com.qf.test;  import com.qf.controller.UserController; import com.qf.pojo.User; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext;  import java.util.List;  public class SpringTest {     @Test      public void testFindAll() {         //加载配置文件,创建applicationContext对象         ClassPathXmlApplicationContext applicationContext =                 new ClassPathXmlApplicationContext("applicationContext.xml");         //获取Bean对象(即userController)         UserController userController =(UserController) applicationContext.getBean("userController");         //调用findAll方法         List userList = userController.findAll();         System.out.println(userList);     } }(10) 测试结果[User(id=1, name=jack, password=123), User(id=2, name=tom, password=456), User(id=3, name=rose, password=789)]  Process finished with exit code 02 以注解的方式访问数据库(1)Spring中的注解@Configuration     作用:指定当前类是一个配置类     细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。  @ComponentScan 作用:用于通过注解指定spring在创建容器时要扫描的包 属性:value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。 等同于xml中:    @PropertySource 作用:用于指定properties文件的位置 属性:value:指定文件的名称和路径。 关键字:classpath,表示类路径下  等同于xml中:    @Bean     作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中     属性:name:用于指定bean的id。当不写时,默认值是当前方法的名称     细节:当我们使用注解配置方法时,如果方法有参数,在参数前加: @Qualifier("@Bean注解中name的值"),spring框架会去容器中查找有没有可用的bean对象查找的方式和Autowired注解的作用是一样的。 @Import     作用:用于导入其他的配置类     属性:value:用于指定其他配置类的字节码。     当我们使用Import的注解之后,有Import注解的类就父配置类,而导入的都是子配置类     等同于xml中:  (2) 创建user(对应的表)表并添加数据CREATE TABLE USER(     id INT,     username VARCHAR(20),     PASSWORD VARCHAR(20) )      INSERT INTO USER(id,username,PASSWORD) VALUES(1001,"jack","123"); INSERT INTO USER(id,username,PASSWORD) VALUES(1002,"rose","456"); INSERT INTO USER(id,username,PASSWORD) VALUES(1003,"tom","789");(3) 创建maven工程后,在pom.xml中导入依赖                                org.springframework             spring-context             5.3.10                                         org.springframework             spring-jdbc             5.3.10                                         mysql             mysql-connector-java             8.0.26                                         com.alibaba             druid             1.2.8                                         org.projectlombok             lombok             1.18.20                                         junit             junit             4.13.2             test                                              org.springframework             spring-test             5.3.10              (4) 创建jdbc.properties配置文件db.username = root db.password = root db.driverClassName = com.mysql.cj.jdbc.Driver db.url = jdbc:mysql://localhost:3306/java2109?serverTimezone=Asia/Shanghai&characterEncoding=UTF8(5)创建SpringConfiguration.java作为注解配置类(==bean.xml)package com.qf.config;  import com.alibaba.druid.pool.DruidDataSourceFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.jdbc.core.JdbcTemplate;  import javax.sql.DataSource; import java.util.Properties; //指定当前类为配置类,优于其他类先执行,替换applicationContext.xml文件 @Configuration  //@PropertySource用于指定properties文件的位置 //引入配置文件,连接数据库 @PropertySource(value = "classpath:db.properties")  @ComponentScan("com.qf")//扫描对应包下的注解 public class SpringConfiguration {      //引入配置文件db.properties的属性、值     @Value("${db.username}")     private String username;     @Value("${db.password}")     private String password;     @Value("${db.url}")     private String url;     @Value("${db.driverClassName}")     private String driverClassName;      @Bean//把当前方法的返回值放在Spring容器中,相当于     //为了不再单独写一个数据源,将数据源(连接池)封装到JdbcTemplate,返回JdbcTemplate获得数据源     public JdbcTemplate getJdbcTemplate(){         //创建properties对象,为了获取数据源         Properties properties = new Properties();         //设置对应参数,获得对应数据源的值         properties.setProperty("username",username);         properties.setProperty("password",password);         properties.setProperty("url",url);         properties.setProperty("driverClassName",driverClassName);          try {             //获取数据源             DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);             //返回Jdbc模版对象             return new JdbcTemplate(dataSource);          } catch (Exception e) {             e.printStackTrace();         }          throw new RuntimeException("连接数据库异常");     }  } (6)创建实体类package com.qf.pojo;  import lombok.Data;  @Data public class User {      private Integer id;     private String name;     private String password;  }(7)创建controller层的UserControllerpackage com.qf.controller;  import com.qf.pojo.User; import com.qf.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller;  @Controller//把当前类对象存入spring容器中 public class UserController {      @Autowired//按照类型自动注入     private UserService userService;      public User findById(Integer id){         return userService.findById(id);     } } (8)创建Mapper层的UserMapper接口及UserMapperImpl实现类package com.qf.mapper;  import com.qf.pojo.User;  public interface UserMapper {          User findById(Integer id); }  package com.qf.mapper.impl;  import com.qf.mapper.UserMapper; import com.qf.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository;  @Repository//把当前类对象存入spring容器中 public class UserMapperImpl implements UserMapper {      @Autowired//按照类型自动注入     //引入jdbcTemplate,调用方法     private JdbcTemplate jdbcTemplate;      @Override     public User findById(Integer id) {         //准备sql语句         String sql = "select id,name,password from t_user where id = ?";          //调用方法,并返回查询数据         // query:查询         // update: 修改         // BeanPropertyRowMapper:是jdbcTemplate内封装好的对象,保存着由查询所有方法及实体类属性得到的查询数据         // 返回值是一个集合,加get(0)表示获取集合的第一个对象返回         return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(User.class),id).get(0);     } } (9) 创建Service层的UserService接口以及UserServiceImpl实现类package com.qf.service;  import com.qf.pojo.User;  public interface UserService {          User findById(Integer id); }  package com.qf.service.impl;  import com.qf.mapper.UserMapper; import com.qf.pojo.User; import com.qf.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;  @Service////把当前类对象存入spring容器中 public class UserServiceImpl implements UserService {      @Autowired//按照类型自动注入     //引入userMapper,调用方法     private UserMapper userMapper;      @Override     public User findById(Integer id) {         return userMapper.findById(id);     } }(10) 创建测试类SpringTastpackage com.qf.test;  import com.qf.config.SpringConfig; import com.qf.config.SpringConfiguration; import com.qf.controller.UserController; import com.qf.pojo.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  @RunWith(SpringJUnit4ClassRunner.class)//集成Juint,测试纯注解访问数据库 //@ContextConfiguration(classes= SpringConfiguration.class)//引入配置类 @ContextConfiguration(classes= SpringConfig.class)//引入配置类 public class SpringTest {      //按照类型自动注入     @Autowired     //引入userController,调用方法     private UserController userController;      @Test     public void testFindById(){          User user = userController.findById(3);         System.out.println(user);     } } (11) 测试结果[User(id=1, name=jack, password=123), User(id=2, name=tom, password=456), User(id=3, name=rose, password=789)]  Process finished with exit code 0

听力下降,耳鸣严重,戴助听器能改善么?你好,助听器不能单纯的采购,而是要到专业的助听器验配中心,进行咨询检查测听试听等整个流程后,才可以确定是否需要配戴助听器。配助听器要注意几个问题1听力检查,医院和配助听器的地方都可听力下降到什么程度需要配助听器?听力下降到什么程度需要配助听器?你好,对于这个问题,我需要给你好好科普一下。首先是题主需要知道听力损失的程度划分?一般是有6个程度划分正常听力025dBHL这属于正常的听力范围,无打造绿色节能大数据中心湖南移动5G低碳运营助力双碳绿色行动华声在线8月12日讯(记者张鼎峰通讯员何欣)在湖南移动的数据中心,一张巨大的屏幕上,各类设备用能数据正在实时跳动机房耗电量是降还是升?空调系统运行是否在能耗最优模式?电能利用效率(未来已来联想未来中心展示晨星机器人等智能化转型成果未来的智能化工厂是什么样子?相信不少人心中都有自己的见解。其实亲眼见证未来,也并不是一件难事。近日,联想上海未来中心宣布落户张江高科联想创新科技园。这是继位于联想集团全球总部的北京最激进新能源政策面前,留给中东的是一地鸡毛从全球新能源汽车发展目标来看,欧洲对新能源汽车的问鼎之心昭然若揭。英国爱尔兰丹麦葡萄牙西班牙等更是针对未来新能源的普及程度提出了100的目标,德法意也相继跟上,欧洲的新能源汽车发展无人机应用领域新发展赋能智慧城市建设随着智慧城市的发展,新兴热门技术不断崛起。无人机技术作为其中之一,因为具有操作简单应用灵活等特点,受到了不少人的青睐。无人机通常在城市中起着治安巡检地形测绘航拍取景等作用,但随着信百度发布五福AI助老计划,年底前将落地8座城市并捐赠智能设备8月11日,百度五福AI助老计划发布仪式暨智慧助老全国城市征集活动正式启动。基于五福AI助老计划这一契机,百度预计到年底前将在全国范围内落地8座城市,并为入选城市捐赠一批五福AI助阿里女员工房卡如何到男上司手中?亚朵酒店再发声,三大疑问待解阿里巴巴(09988。HKBABA。US)高管涉嫌联合商家侵犯女下属一案正在持续发酵。涉事女员工称,其上司到酒店前台偷偷办了她的房卡,而且四次进出她的房间。其中,涉事酒店为亚朵轻居互联网时代,圈子文化更容易导致信息茧房互联网社会人们以采集信息为生,恰似祖先以采集食物为生一样,拘泥于旧时代的人,或者在信息时代里守着某一分科垂类一亩三分地的人,就会像地理大发现中求稳而不可得的农耕文明一样,被涉猎广泛手机存储已满,如何删除哪些无关紧要的文件夹内容手机存储空间不足的问题,一直都困扰着使用手机的人们。哪怕现在手机内存都已增加至512GB了,特别是对于还使用64GB128GB的朋友来说,还是觉得不够用的。下面,我们将平时整理的一三星今年在折叠屏手机市场上占据主导地位,原因没有强大的对手据新闻媒体报道,三星手机是罕见的在全世界区域内大规模批量生产售卖折叠屏智能机的生产商,这促使三星手机在折叠屏手机销售市场拥有了首要地位。调查机构CounterpointResear
戴了助听器后感觉听力下降了,怎么回事?你好,戴助听器适应后,摘下来反而是不习惯,且摘下来后有听力不如以前好的错觉,怀疑戴上助听器后听力变差了,这些都是错误的观点。就如同常年戴近视眼镜一样,突然摘下来都会觉得看得不如从前11月我国乘用车零售超181万辆芯片短缺压力逐步缓解来源人民网原创稿人民网北京12月9日电(记者王连香)记者从中国汽车流通协会获悉,日前,乘用车市场信息联席会发布11月全国乘用车市场分析报告显示,今年11月,我国乘用车零售量为181全世界只3个人有的黄金血,人类的更高形态?可能进化出超能力?我们每次看到超级英雄电影中,那些超人飞天遁地,无所不能的样子,我们有的时候也会羡慕,你可能会有幻想,人类是否真的有一天也会像这些超人一样,进化出那些匪夷所思的超能力呢?你还别说,很天优科技2021年亏损251。47万同比亏损减少新研发产品硬件成本下降挖贝网5月9日,天优科技(839686)近日发布2021年度报告,报告期内公司实现营业收入3,079,857。26元,同比下滑45。09归属于挂牌公司股东的净利润2,514,740孙尚传建设自主可控的中国特色元宇宙体系复兴中华文明来源中国网中国网5月9日讯在百年变局的时代背景下,元宇宙将催生前所未有的中国机会,值得探究与深思。如何把握元宇宙这场新一轮科技革命机遇?如何建设中国特色的元宇宙科技产业之路?大富科中国电信麦芒11(8GB128GB5G版)怎么样?中国电信麦芒11中国电信麦芒11(8GB128GB5G版)最新上市价格还未公布,上市时间为2022年。首先,我们关注屏幕方面,屏幕尺寸为6。6英寸。分辨率为24001080。屏幕占中国电信麦芒11(8GB128GB5G版)参数大全中国电信麦芒11中国电信麦芒11(8GB128GB5G版)价格暂无价格上市时间2022年屏幕尺寸6。6英寸分辨率24001080屏幕占比89。3屏幕技术支持4096级调光,护眼模式如果预算不足,可以考虑这3款低价手机,能轻松用到2026年预算充足自然可以入手那些顶级旗舰手机,像iPhone13ProMax三星S22UItra等等,体验肯定很棒,但是预算不足又该如何选择呢?由于价格低,厂商会在很多地方克扣配置,稍有不探索为何觉得小米手机设计一般,我认为原因在于这一点前言最早开始使用小米手机的时候是在小米第1款机型小米1出现的时候。这么多年的发展,小米手机的外观设计确实出现了很大的变化,但是,前一段时间去小米专卖店探店,确实会发现小米手机的设计手机刷lineageos系统,以及root1。备份好手机数据2。下载所需工具下载adb。exefastboot。exe下载地址httpsdl。google。comandroidrepositoryplatformtools国产政务笔记本电脑PC计算机上市,100国产芯(飞腾景嘉微)在国产化的热潮中,办公应用场景作为基础的场景之一,成为政企用户率先关注的领域。2020年国家全面推行党政办公设备国产化。据悉,仅仅20202021年,我国党政办公电脑市场需求约为6