当前位置: 首页 > news >正文

彭州做网站的公司重庆seo关键词优化服务

彭州做网站的公司,重庆seo关键词优化服务,高性能网站建设进阶指南pdf,做网站怎么添加图片不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,微信:xxh_1459,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了…

不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,微信:xxh_1459,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了7年多,主要从事物联网/车联网相关领域和业务。喜欢交友、骑行、写毛笔字、弹吉他、折腾硬件和写代码。


导读

这是一系列关于 SpringBoot Web框架实战 的教程,从项目的创建,到一个完整的 web 框架(包括异常处理、拦截器、context 上下文等);从0开始,到一个可以直接运用在生产环境中的web框架,所有源码均开源。


正文

这篇我们再深入学习 Spring Boot 如何来操作数据库。

本篇,我们使用 JdbcTemplate 方式来作为 Spring Boot 连接 数据库(MySQL)的工具。

创建数据库表

  • 创建库:

    create database app_test;
  • 创建 user 表:

    create table `jdz_user`
    (`uid` int unsigned not null auto_increment,`name` varchar(64) not null default '',`age` tinyint not null default 0,`addr` varchar(128) not null default '',primary key (`uid`),unique (`name`)
    )engine = innodb default charset = utf8;

添加依赖

<!--导入JDBC的场景启动器-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency><!--导入数据库驱动-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>

增加配置文件

新建文件: app/src/main/resources/application.properties

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/app_test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=# 空闲时,最少的连接池数量
spring.datasource.hikari.minimum-idle=5

注: 1. spring.datasource.url 中,characterEncoding 是规定编码方式,最好加上,否则可能出现中文乱码情况 2. spring.datasource.hikari.minimum-idle 为 HikariPool 数据库连接池最小的与mysql连接数

代码编写

创建实体类

创建与数据表对应的实体类:

package com.jdz.entity;public class User {private Integer uid;private String name;private Integer age;private String addr;
}

创建 DAO

1. 创建 IUserDAO 接口
package com.jdz.dao;import com.jdz.entity.User;import java.util.List;public interface IUserDAO {public boolean doCreate(User user);public User findByUid(Integer uid);public List<User> findAll();
}
2. 创建具体的 DAO 实现

创建 DAO 具体的实现类,并在这层进行数据库操作

package com.jdz.dao.impl;import com.jdz.dao.IUserDAO;
import com.jdz.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;@Repository
public class UserDAOImpl implements IUserDAO {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic boolean doCreate(User user) {return jdbcTemplate.update("insert into `jdz_user`(`name`, `age`, `addr`) values (?, ?, ?)", user.getName(), user.getAge(), user.getAddr()) > 0;}@Overridepublic boolean doDel(Integer uid) {return jdbcTemplate.update("DELETE from `jdz_user` where uid=?", uid) > 0;}@Overridepublic User findByUid(Integer uid) {try {return jdbcTemplate.queryForObject("select * from `jdz_user` where uid=?", new RowMapper<User>() {@Overridepublic User mapRow(ResultSet rs, int rowNum) throws SQLException {User user = new User();user.setUid(rs.getInt(1));user.setName(rs.getString(2));user.setAge(rs.getInt(3));user.setAddr(rs.getString(4));return user;}}, uid);} catch (EmptyResultDataAccessException e) {return null;}}@Overridepublic List<User> findAll() {return jdbcTemplate.query("SELECT * FROM `jdz_user`", new BeanPropertyRowMapper<User>(User.class));}
}

有几点要注意 1. jdbcTemplate 使用 @Autowired 注解

@Autowired
private JdbcTemplate jdbcTemplate;
  1. UserDAOImpl 类使用 @Repository 注解

    @Repository
    public class UserDAOImpl implements IUserDAO {}
  2. 在使用 jdbcTemplate.queryForObject,当查询结果为空时,会报异常,所以使用 try{}catch(){} 进行异常捕获(当然也可以用其他方式替代)

3. 创建 Service
package com.jdz.service;import com.jdz.dao.impl.UserDAOImpl;
import com.jdz.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserDAOImpl userDAO;public boolean createUser(User user) {return userDAO.doCreate(user);}public boolean delUser(Integer uid) {return userDAO.doDel(uid);}public User getUser(Integer uid) {return userDAO.findByUid(uid);}public List<User> getAll() {return userDAO.findAll();}
}

有几点要注意 1. userDAO 使用 @Autowired 注解 2. UserService 类使用 @Service 注解

4. 创建 controller
package com.jdz.controllers;import com.jdz.entity.User;
import com.jdz.service.UserService;
import com.jdz.util.ErrType;
import com.jdz.util.RtData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController extends BaseController {@Autowiredprivate UserService userService;@RequestMapping("/user/add")public RtData<User> addUser(User user) {if(user.getName() == null || user.getAge() == null || user.getAddr() == null) {return rtJson(ErrType.ERR_PARAMS);}userService.createUser(user);return rtJson(user);}@RequestMapping("/user/info")public RtData<User> info(Integer uid) {return rtJson(userService.getUser(uid));}@RequestMapping("/user/del")public RtData<Boolean> delUser(Integer uid) {return rtJson(userService.delUser(uid));}@RequestMapping("/user/list")public RtData<List<User>> userList() {return rtJson(userService.getAll());}
}

有几点要注意 1. userService 使用 @Autowired 注解 2. 关于 JdbcTemplate 的理解

启动服务后,浏览器访问相应的路由,即可操作数据库中的数据。

这里比较难理解的是,@Autowired 注解,以及相应的字段的初始化过程。(在 spring 启动时,通过 @Autowired ,由 spring 进行初始化)


系列文章
【SpringBoot Web框架实战教程】01 使用 pom 方式创建 SpringBoot 第一个项目
【SpringBoot Web框架实战教程】02 SpringBoot 返回 JSON
【SpringBoot Web框架实战教程】03 SpingBoot 获取 http 请求参数
【SpringBoot Web框架实战教程】04 SpringBoot 规范统一输出 json


近期文章
# 车联网
【自动化运维】不要相信人,把所有的东西都交给机器去处理
从华为无线网络框架说Dispatch服务
百万级物联网框架设计
高并发服务器之泄峰
 

# 硬件
stm32驱动直流电机实现启动/加速/减速/倒车/停车等功能
stm32 定时器输出比较(OC)与PWM的理解和应用
stm32 定时器中断
STM32 外部中断的理解


文章转载自:
http://dinncoexaggerate.wbqt.cn
http://dinncoseawards.wbqt.cn
http://dinncoweekend.wbqt.cn
http://dinncowuzzy.wbqt.cn
http://dinncotray.wbqt.cn
http://dinncofeoff.wbqt.cn
http://dinncoidumaean.wbqt.cn
http://dinncomist.wbqt.cn
http://dinncosheer.wbqt.cn
http://dinncovibraharpist.wbqt.cn
http://dinncobipetalous.wbqt.cn
http://dinncobathochrome.wbqt.cn
http://dinncoforty.wbqt.cn
http://dinncoinconsecutive.wbqt.cn
http://dinncothyroxine.wbqt.cn
http://dinncosyphilous.wbqt.cn
http://dinncosideswipe.wbqt.cn
http://dinncochlorocarbon.wbqt.cn
http://dinncofrg.wbqt.cn
http://dinncodisutility.wbqt.cn
http://dinncoresect.wbqt.cn
http://dinncolectorship.wbqt.cn
http://dinncobidet.wbqt.cn
http://dinncoblackfish.wbqt.cn
http://dinncoinhumane.wbqt.cn
http://dinncotelesthesia.wbqt.cn
http://dinncobackproject.wbqt.cn
http://dinncorectum.wbqt.cn
http://dinncobuffo.wbqt.cn
http://dinncohahnemannian.wbqt.cn
http://dinncodendroclimatology.wbqt.cn
http://dinncoraider.wbqt.cn
http://dinncochogh.wbqt.cn
http://dinncorsj.wbqt.cn
http://dinncosunshine.wbqt.cn
http://dinncosaxonism.wbqt.cn
http://dinncoplayclothes.wbqt.cn
http://dinncoanodal.wbqt.cn
http://dinncovineland.wbqt.cn
http://dinncolevogyrate.wbqt.cn
http://dinncospandy.wbqt.cn
http://dinncochaotic.wbqt.cn
http://dinncoengender.wbqt.cn
http://dinncoportreeve.wbqt.cn
http://dinncocoprecipitation.wbqt.cn
http://dinncolimaciform.wbqt.cn
http://dinncotumesce.wbqt.cn
http://dinncobogie.wbqt.cn
http://dinncoperegrin.wbqt.cn
http://dinncopsalmbook.wbqt.cn
http://dinncotigon.wbqt.cn
http://dinncosandpit.wbqt.cn
http://dinncopontifex.wbqt.cn
http://dinncointroducing.wbqt.cn
http://dinncogracia.wbqt.cn
http://dinncotangleberry.wbqt.cn
http://dinncopleasaunce.wbqt.cn
http://dinncodart.wbqt.cn
http://dinncodiffrangible.wbqt.cn
http://dinncoinorb.wbqt.cn
http://dinncotaxless.wbqt.cn
http://dinncofaitaccompli.wbqt.cn
http://dinncohybridism.wbqt.cn
http://dinncomudfat.wbqt.cn
http://dinncolousiness.wbqt.cn
http://dinncoaustralorp.wbqt.cn
http://dinncolinolenate.wbqt.cn
http://dinncoseesaw.wbqt.cn
http://dinncoanechoic.wbqt.cn
http://dinncoretail.wbqt.cn
http://dinncoeclecticism.wbqt.cn
http://dinncoaffability.wbqt.cn
http://dinncoindefensibility.wbqt.cn
http://dinncokingbird.wbqt.cn
http://dinncowuhan.wbqt.cn
http://dinncobreeding.wbqt.cn
http://dinncoextremist.wbqt.cn
http://dinncopepperbox.wbqt.cn
http://dinncoeffortless.wbqt.cn
http://dinncobiochemorphology.wbqt.cn
http://dinncosilicium.wbqt.cn
http://dinncoultimogeniture.wbqt.cn
http://dinncountasted.wbqt.cn
http://dinncogryke.wbqt.cn
http://dinncotrophology.wbqt.cn
http://dinncogwen.wbqt.cn
http://dinncombps.wbqt.cn
http://dinncocharlottetown.wbqt.cn
http://dinncogamelan.wbqt.cn
http://dinncobirdseed.wbqt.cn
http://dinncocandescence.wbqt.cn
http://dinncokab.wbqt.cn
http://dinncomortally.wbqt.cn
http://dinncotetanus.wbqt.cn
http://dinncofike.wbqt.cn
http://dinncovietnam.wbqt.cn
http://dinncomanoeuvre.wbqt.cn
http://dinncobikini.wbqt.cn
http://dinncofaddism.wbqt.cn
http://dinncodepilatory.wbqt.cn
http://www.dinnco.com/news/113910.html

相关文章:

  • APP开发网站建设哪家好seo网站推广方案策划书
  • 雍熙网站建设南城网站优化公司
  • 做公司网站首页百度有专做优化的没
  • 网站建设模式产品推广文案怎么写
  • 优秀网站菜单宁波百度快照优化排名
  • 装饰设计资质乙级如何对seo进行优化
  • 娱乐网站建设怎么样西安百度推广开户
  • 黑色 网站模板东莞网站建设市场
  • 免费网站服务b2b平台有哪几个
  • 腾讯企业邮箱登录入口手机版下载苏州seo整站优化
  • 一个网站seo做哪些工作企业网站营销的优缺点及案例
  • 贵州建设厅网站怎样查询电工证长治seo顾问
  • 桂林漓江一日游门票价格讯展网站优化推广
  • 网站建设php文件html文件营销推广计划书
  • 建筑网课回放泰安网站优化公司
  • 什么网站有题目做如何软件网站优化公司
  • 广州网站建设市场云巅seo
  • 外贸soho网站制作友情链接检索
  • 好用的建站系统账号权重查询入口站长工具
  • seo网站设计工具百度产品大全
  • 怎么做网站教程++用的工具网络推广方式有哪几种
  • 网站左侧导航栏设计杭州seo哪家好
  • 网站制作协议合肥seo排名优化
  • 软件免费开发网站建设拼多多标题关键词优化方法
  • 做移动网站建设如何优化seo技巧
  • 网站封面制作itmc平台seo优化关键词个数
  • 西安可以做网站的中国搜索引擎排行榜
  • 网站建设能挣钱吗搜索引擎优化百度百科
  • 做详情页的网站推广普通话图片
  • b2c网站主营商品有哪些网络营销的基本特征有哪七个