日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Springboot集成jdbcTemplate過程解析

瀏覽:46日期:2023-05-22 13:35:19

一 說明

實際工作中其實很少會用到jdbcTemplate去操作數據庫,因為其使用方式不是很靈活,sql的拼接能力不強;實際上jdbcTemplate是屬于spring自帶的數據層模板,在spring中可以說是比較失敗的一個案例,原因是當代流行mybatis當做持久層訪問數據庫,其優越的sql拼接能力、動態sql、半自動化映射、和易于sql優化的特性,深受廣大互聯網公司的喜愛,并且mybatis的市場占有率不斷的上升,hibernate的市場不斷縮水,可以說hibernate已經這種強映射關系的持久層模型已經走到互聯網時代的盡頭了。

本文寫jdbcTemplate只是當作大家的一個入門學習,可以說以后你很難用到這門技術,所以不會深入研究,有興趣的朋友可以專欄我其他關于springboot的集成系列。本次演示使用jdk1.8,mysql5.6,springboot2.1。​

二數據庫建表和實體

user表,里面有三個屬性 用戶id、 用戶名和電話號碼。

CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ’用戶id’, `name` varchar(255) DEFAULT NULL COMMENT ’用戶名’, `telephone` varchar(255) DEFAULT NULL COMMENT ’用戶電話’, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

user表對應的實體:

/** * @Author lsc * @Description <p>pojo </p> * @Date 2019/11/2 10:16 */public class User { // id private Long id; // 姓名 private String name; // 電話 private String telephone; // 省略 set get}

三 dao層

對于使用jdbcTemplate,我們的dao層需要接口定義crud操作方法,其實現類則進行具體的sql操作,很多開發人員沒有這種解耦的思想,往往就直接在servic層操作sql,可以說沒有完整的一個知識體系,往往會造成后期維護困難,項目無法進行下去;

3.1 dao接口

/** * @Author lsc * @Description <p> user dao 接口 </p> * @Date 2019/11/2 10:19 */public interface UserDao { // 添加 int addUser(User user); // 改 int updateUser(User user); // 刪 int deleteUser(Long id); // 通過id查詢 User findUserbyId(Long id);}

3.2 dao層實現類

dao層的實現類才是具體操作sql的地方。

/** * @Author lsc * @Description <p> user 持久層 </p> * @Date 2019/11/2 10:22 */@Repositorypublic class UserDaoImpl implements UserDao { // 注入jdbc模板 @Autowired private JdbcTemplate jdbcTemplate; @Override public int addUser(User user) { // sql String sql = 'insert into user (name,telephone) values (?,?)'; // jdbc insert return jdbcTemplate.update(sql,user.getName(),user.getTelephone()); } @Override public int updateUser(User user) { // sql String sql = 'update user set name = ?, telephone = ? where id = ?'; // jdbc updae return jdbcTemplate.update(sql,user.getName(),user.getTelephone(),user.getId()); } @Override public int deleteUser(Long id) { // sql String sql = 'delete from user where id = ?'; // delete return jdbcTemplate.update(sql,id); } @Override public User findUserbyId(Long id) { // sql String sql = 'select * from user where id = ?'; // params Object[] params = new Object[]{id}; // rowMapper BeanPropertyRowMapper rowMapper = new BeanPropertyRowMapper(User.class); // jdbc query List<User> query = jdbcTemplate.query(sql, params, rowMapper); // return user return query.get(0); }}

四 service層

4.1 service層接口

service層接口定義業務的方法,提供給控制層調用。

public interface UserService { // 添加 int addUser(User user); // 改 int updateUser(User user); // 刪 int deleteUser(Long id); // 通過id查詢 User findUserbyId(Long id);}

4.2 service層實現類

service層的實現類才是具體寫業務邏輯代碼的地方。

/** * @Author lsc * @Description <p> user service </p> * @Date 2019/11/2 10:37 */@Servicepublic class UserServiceImpl implements UserService { @Autowired UserDao userDao; @Override public int addUser(User user) { return userDao.addUser(user); } @Override public int updateUser(User user) { return userDao.updateUser(user); } @Override public int deleteUser(Long id) { return userDao.deleteUser(id); } @Override public User findUserbyId(Long id) { return userDao.findUserbyId(id) ; }}

五 controller

這是一個簡單的restful層的api,實現crud功能。

/** * @Author lsc * @Description <p>user 控制層 </p> * @Date 2019/11/2 10:43 */@RestControllerpublic class UserController { @Autowired UserService userService; // 查詢user @GetMapping('user/{id}') public User getUser(@PathVariable Long id){ return userService.findUserbyId(id); } // 添加user @PostMapping('user') public int addUser(@RequestBody User user){ return userService.addUser(user); } //修改 user @PutMapping('user/{id}') public int updateUser(@PathVariable Long id,@RequestBody User user){ user.setId(id); return userService.updateUser(user); } // 刪除user @DeleteMapping('user/{id}') public int deleteUser(@PathVariable Long id){ return userService.deleteUser(id); }}

六 配置文件

配置文件不使用properties的原因是yml文件的語法格式更加簡練明了,在配置文件中的注解已經很詳細,所以不會贅述。

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver #數據庫驅動url: jdbc:mysql://192.168.0.105:3306/springboot?useUnicode=true&characterEncoding=utf-8 #數據庫地址username: root #數據庫賬號password: 123456 # 數據密碼type: com.alibaba.druid.pool.DruidDataSource # 連接池類型druid:#初始化連接池的連接數量initial-size: 5# 最小min-idle: 5# 最大max-active: 20#配置獲取連接等待超時的時間max-wait: 6000#配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒time-between-eviction-runs-millis: 6000# 配置一個連接在池中最小生存的時間,單位是毫秒min-evictable-idle-time-millis: 3000

七 pom.xml

很抱歉我把xml放在最后面了

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <relativePath/> </parent> <dependencies> <!-- jdbc 啟動器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- mysql 啟動器 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 連接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.15</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- --> </dependencies>

八 測試工具說明

大家可以通過postman等開發工具進行restful風格接口測試,作為后端開發者,就別去寫頁面了。

九 測試鏈接池說明

如果大家想知道怎么測試連接池是否連接成功可以實現ApplicationContextAware接口進行測試,具體的代碼如下:

/** * @Author lsc * @Description <p> 實現spring bean 生命周期接口</p> * @Date 2019/11/2 10:08 */@Componentpublic class DatabaseVision implements ApplicationContextAware { ApplicationContext applicationContext = null; // spring ioc 初始化 bean 的時候調用 @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { // 獲得applicationContext this.applicationContext = applicationContext; // 獲得dataSource DataSource dataSource = applicationContext.getBean(DataSource.class); // 啟動 springboot application print com.alibaba.druid.pool.DruidDataSource System.out.println(dataSource.getClass().getName()); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久av国产紧身裤| 美女一区网站| 国产精品外国| 一区免费在线| 米奇777超碰欧美日韩亚洲| 久久精品99久久无色码中文字幕| www.九色在线| 久久蜜桃精品| 欧美成人国产| 国产精品婷婷| 免费看欧美美女黄的网站| 天堂成人免费av电影一区| 亚洲欧美日韩在线观看a三区| 国产毛片一区| 日本亚州欧洲精品不卡| 亚洲香蕉视频| 欧美日韩99| 国产一区二区三区日韩精品| 国产精品麻豆久久| 日韩精品影视| 一区视频在线| 亚洲精品日韩久久| 国产精品亚洲综合在线观看| 精品国产黄a∨片高清在线| 成人亚洲一区二区| 成人看片网站| 国产午夜久久| 欧美日本久久| 精品久久亚洲| 欧美va天堂在线| 视频在线观看91| 欧美精品三级在线| bbw在线视频| 欧美日韩国产高清电影| 蜜臀精品久久久久久蜜臀| 日韩和欧美一区二区| 国产激情久久| 久久精品国语| 亚洲免费资源| 老色鬼精品视频在线观看播放| 精品日韩一区| 在线视频精品| 欧美黑人巨大videos精品| 日韩精品一区二区三区免费观影 | 国产精品s色| 亚洲国产欧美日本视频| 制服诱惑一区二区| 国产精品草草| 欧美午夜不卡| 日本午夜精品一区二区三区电影| 国产精品成久久久久| 蜜芽一区二区三区| 国产精品黑丝在线播放| 美国三级日本三级久久99 | 国产精品2023| 一区久久精品| 国产精品极品国产中出| 精品一区亚洲| 国产一区欧美| 国产精品密蕾丝视频下载| 欧美69视频| 蜜桃精品视频| 天堂av在线一区| 国产成人精品一区二区三区在线| 99pao成人国产永久免费视频| 国产精品hd| 中文精品视频| 在线看片福利| 国产日产高清欧美一区二区三区 | 国产激情在线播放| 日本 国产 欧美色综合| 亚洲伊人av| 日韩和欧美一区二区| 五月婷婷六月综合| 开心激情综合| 亚洲天堂日韩在线| 亚洲五月婷婷| 精品国产不卡一区二区| 日韩欧美激情电影| 午夜日本精品| 久久久久久夜| 国产精品www.| 日韩精品一级二级 | 三级亚洲高清视频| 久久久久99| 国内在线观看一区二区三区| 日韩中文字幕一区二区高清99| 日韩精品欧美| 久久久久久色| 视频一区在线播放| 欧美午夜精彩| 国产高潮在线| 国产精品亲子伦av一区二区三区| 亚洲精选91| 久久香蕉国产| 亚洲综合电影| 日韩a一区二区| 国产精品蜜月aⅴ在线| 免费精品视频在线| 日韩一级精品| 欧美成人午夜| 久久久精品日韩| 成人一二三区| 久久av电影| 国产精品magnet| 欧美午夜三级| 日本不卡视频在线观看| 亚洲va久久久噜噜噜久久| 日韩亚洲国产欧美| 久久精品国产99久久| 成人片免费看| 精品精品99| 你懂的国产精品永久在线| 日本亚洲最大的色成网站www| 快she精品国产999| 蜜臀久久99精品久久久久宅男| 亚洲欧美日韩国产一区| 国产精品日本| 亚洲一区二区av| 爽爽淫人综合网网站| 亚洲一区区二区| 亚洲神马久久| 亚洲丝袜啪啪| 日韩**一区毛片| 日韩av不卡在线观看| 欧美日韩一区二区三区在线电影| 欧美一区91| 国产高清日韩| 精品丝袜久久| 日韩中文字幕高清在线观看| se01亚洲视频| 亚洲韩日在线| 国产精品婷婷| 亚洲+小说+欧美+激情+另类| 中文字幕一区二区三区日韩精品| 一区二区三区四区在线观看国产日韩 | 日韩福利视频网| 综合激情五月婷婷| 日韩精品社区| 欧美激情一区| 国产96在线亚洲| 成人日韩在线观看| 欧美影院三区| 先锋影音久久久| 日本午夜精品| 精品美女在线视频| 久久久777| 免费欧美在线视频| 国产伦一区二区三区| 国产91在线精品| 亚洲午夜精品久久久久久app| 国产视频亚洲| 日韩中文字幕一区二区高清99| 91精品国产自产观看在线 | 美女国产精品久久久| 国产精品不卡| 欧美日韩四区| 日韩视频1区| 久久精品色播| 国产精品av一区二区| 亚洲精品视频一二三区| 国产精品对白久久久久粗| 日韩大片在线观看| 亚洲精品a级片| 日本va欧美va瓶| 成人在线视频区| 亚洲欧洲另类| 欧美片第1页综合| 日韩大片免费观看| 在线亚洲激情| 国产精品夜夜夜| 精品欧美一区二区三区在线观看| 久热精品在线| 麻豆高清免费国产一区| 九一成人免费视频| 青草久久视频| 日韩中文欧美| 日韩精品一区二区三区av | 神马日本精品| 日韩三级一区| 91av亚洲| 精品国产午夜| 久久精品播放| 丰满少妇一区| 日韩不卡一二三区| 伊人成人网在线看| 中文字幕高清在线播放| 国产午夜久久av| 亚洲在线一区| 精品日韩视频| 美女精品一区二区| 亚洲精品大片| 亚洲精品午夜av福利久久蜜桃| 久久精品资源| 婷婷成人av| 欧美日韩三区| 色婷婷久久久| 成人亚洲一区| 麻豆91在线播放| 日韩av一区二|