真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Springboot集成jdbcTemplate的用法

這篇文章主要講解了Springboot集成jdbcTemplate的用法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

在長(zhǎng)沙等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),長(zhǎng)沙網(wǎng)站建設(shè)費(fèi)用合理。

一 說(shuō)明

實(shí)際工作中其實(shí)很少會(huì)用到j(luò)dbcTemplate去操作數(shù)據(jù)庫(kù),因?yàn)槠涫褂梅绞讲皇呛莒`活,sql的拼接能力不強(qiáng);實(shí)際上jdbcTemplate是屬于spring自帶的數(shù)據(jù)層模板,在spring中可以說(shuō)是比較失敗的一個(gè)案例,原因是當(dāng)代流行mybatis當(dāng)做持久層訪問(wèn)數(shù)據(jù)庫(kù),其優(yōu)越的sql拼接能力、動(dòng)態(tài)sql、半自動(dòng)化映射、和易于sql優(yōu)化的特性,深受廣大互聯(lián)網(wǎng)公司的喜愛(ài),并且mybatis的市場(chǎng)占有率不斷的上升,hibernate的市場(chǎng)不斷縮水,可以說(shuō)hibernate已經(jīng)這種強(qiáng)映射關(guān)系的持久層模型已經(jīng)走到互聯(lián)網(wǎng)時(shí)代的盡頭了。

本文寫(xiě)jdbcTemplate只是當(dāng)作大家的一個(gè)入門(mén)學(xué)習(xí),可以說(shuō)以后你很難用到這門(mén)技術(shù),所以不會(huì)深入研究,有興趣的朋友可以專欄我其他關(guān)于springboot的集成系列。本次演示使用jdk1.8,MySQL5.6,springboot2.1。​

二數(shù)據(jù)庫(kù)建表和實(shí)體

user表,里面有三個(gè)屬性 用戶id、 用戶名和電話號(hào)碼。

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表對(duì)應(yīng)的實(shí)體:

/**
 * @Author lsc
 * @Description 

pojo

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

三 dao層

對(duì)于使用jdbcTemplate,我們的dao層需要接口定義crud操作方法,其實(shí)現(xiàn)類則進(jìn)行具體的sql操作,很多開(kāi)發(fā)人員沒(méi)有這種解耦的思想,往往就直接在servic層操作sql,可以說(shuō)沒(méi)有完整的一個(gè)知識(shí)體系,往往會(huì)造成后期維護(hù)困難,項(xiàng)目無(wú)法進(jìn)行下去;

3.1 dao接口

/**
 * @Author lsc
 * @Description 

user dao 接口

* @Date 2019/11/2 10:19 */ public interface UserDao { // 添加 int addUser(User user); // 改 int updateUser(User user); // 刪 int deleteUser(Long id); // 通過(guò)id查詢 User findUserbyId(Long id); }

3.2 dao層實(shí)現(xiàn)類

dao層的實(shí)現(xiàn)類才是具體操作sql的地方。

/**
 * @Author lsc
 * @Description 

user 持久層

* @Date 2019/11/2 10:22 */ @Repository public 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 query = jdbcTemplate.query(sql, params, rowMapper); // return user return query.get(0); } }

四 service層

4.1 service層接口

service層接口定義業(yè)務(wù)的方法,提供給控制層調(diào)用。

public interface UserService {

  // 添加
  int addUser(User user);
  // 改
  int updateUser(User user);
  // 刪
  int deleteUser(Long id);
  // 通過(guò)id查詢
  User findUserbyId(Long id);
}

4.2 service層實(shí)現(xiàn)類

service層的實(shí)現(xiàn)類才是具體寫(xiě)業(yè)務(wù)邏輯代碼的地方。

/**
 * @Author lsc
 * @Description 

user service

* @Date 2019/11/2 10:37 */ @Service public 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

這是一個(gè)簡(jiǎn)單的restful層的api,實(shí)現(xiàn)crud功能。

/**
 * @Author lsc
 * @Description 

user 控制層

* @Date 2019/11/2 10:43 */ @RestController public 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文件的語(yǔ)法格式更加簡(jiǎn)練明了,在配置文件中的注解已經(jīng)很詳細(xì),所以不會(huì)贅述。

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

七 pom.xml

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

	 
	    org.springframework.boot
	    spring-boot-starter-parent
	    2.1.1.RELEASE
	    
	  
	 
    
    
      org.springframework.boot
      spring-boot-starter-jdbc
    
    
    
      mysql
      mysql-connector-java
    
    
    
      com.alibaba
      druid
      1.1.15
    
    
      org.springframework.boot
      spring-boot-starter-web
    
    

  

八 測(cè)試工具說(shuō)明

大家可以通過(guò)postman等開(kāi)發(fā)工具進(jìn)行restful風(fēng)格接口測(cè)試,作為后端開(kāi)發(fā)者,就別去寫(xiě)頁(yè)面了。

九 測(cè)試鏈接池說(shuō)明

如果大家想知道怎么測(cè)試連接池是否連接成功可以實(shí)現(xiàn)ApplicationContextAware接口進(jìn)行測(cè)試,具體的代碼如下:

/**
 * @Author lsc
 * @Description 

實(shí)現(xiàn)spring bean 生命周期接口

* @Date 2019/11/2 10:08 */ @Component public class DatabaseVision implements ApplicationContextAware { ApplicationContext applicationContext = null; // spring ioc 初始化 bean 的時(shí)候調(diào)用 @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { // 獲得applicationContext this.applicationContext = applicationContext; // 獲得dataSource DataSource dataSource = applicationContext.getBean(DataSource.class); // 啟動(dòng) springboot application print com.alibaba.druid.pool.DruidDataSource System.out.println(dataSource.getClass().getName()); } }

看完上述內(nèi)容,是不是對(duì)Springboot集成jdbcTemplate的用法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞名稱:Springboot集成jdbcTemplate的用法
分享路徑:http://weahome.cn/article/jhchpo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部