微服务|微服务 SpringBoot 2.0(七)(使用JdbcTemplates访问Mysql)

一切没有与数据库交互的网站都是假网站 —— Java面试必修
引言
在web开发服务中,开发人员要做的事情就是将数据库中的数据返回至前端页面,在第五章我们已经整合了页面,今天我们再结合数据库做一个完整的增删改查功能,马上要进入数据交互了,紧不紧张
在接下来的文章中,我在末尾处会公布源码,源码将托管在码云上
JdbcTemplate
工具 SpringBoot版本:2.0.4
开发工具:IDEA 2018
Maven:3.3 9
DB:mysql
JDK:1.8
依赖
org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java

添加上面代码后一定要刷新依赖噢
数据源配置 在src/main/resources/application.yml中配置数据源信息。
spring.datasource: url: jdbc:mysql://192.168.2.211:3306/springboot?useUnicode=true&characterEncoding=utf-8 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver

spring-boot-starter-jdbc 默认使用tomcat-jdbc数据源,如果你想使用其他的数据源,比如这里使用了阿里巴巴的数据池管理,你应该额外添加以下依赖:
com.alibaba druid 1.1.5

初始化mysql
-- create table `website_jdbc` CREATE TABLE `website_jdbc` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `url` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; INSERT INTO `website_jdbc` VALUES (1,'Java面试必修', 'www.itmsbx.com'); INSERT INTO `website_jdbc` VALUES (2,'对象无忧', 'www.51object.com'); INSERT INTO `website_jdbc` VALUES (3,'上海恒骊信息科技', 'www.henliy.com'); INSERT INTO `website_jdbc` VALUES (4 , '淘宝网', 'www.taobao.com');

编写Bean,Service,Dao bean
public class WebSiteBean {//省略 getter 和 setter private Long id; private String name; private String url; }

service
public interface WebSiteService {int add(WebSiteBean webSiteBean); int update(WebSiteBean webSiteBean); int deleteByIds(String ids); List queryWebSiteList(Map params); }@Service public class WebSiteServiceImpl implements WebSiteService {@Autowired private WebSiteDao webSiteDao; @Override public int add(WebSiteBean webSiteBean) { return webSiteDao.add(webSiteBean); }@Override public int update(WebSiteBean webSiteBean) { return webSiteDao.update(webSiteBean); }@Override public int deleteByIds(String ids) { return webSiteDao.deleteByIds(ids); }@Override public List queryWebSiteList(Map params) { return webSiteDao.queryWebSiteList(params); } }

dao
public interface WebSiteDao {int add(WebSiteBean webSiteBean); int update(WebSiteBean webSiteBean); int deleteByIds(String ids); List queryWebSiteList(Map params); }@Repository public class WebSiteDaoImpl implements WebSiteDao {@Autowired private JdbcTemplate jdbcTemplate; @Override public int add(WebSiteBean webSiteBean) { return jdbcTemplate.update("insert into website_jdbc(name,url) values(?, ?)" ,webSiteBean.getName(),webSiteBean.getUrl()); }@Override public int update(WebSiteBean webSiteBean) { return jdbcTemplate.update("update website_jdbc set name=?,url where id = ?", new Object[]{webSiteBean.getName(),webSiteBean.getUrl(),webSiteBean.getId()}); }@Override public int deleteByIds(String ids) { return jdbcTemplate.update("delete from website_jdbcwhere id in(" + ids + ")"); }@Override public List queryWebSiteList(Map params) { StringBuffer sql =new StringBuffer(); sql.append("select * from website_jdbc where 1=1"); if(params.containsKey("name")){ sql.append(" and name like '%").append(String.valueOf(params.get("name"))).append("%'"); } if(params.containsKey("url")){ sql.append(" and url like '%").append((String)params.get("url")).append("%'"); } List list = jdbcTemplate.query(sql.toString() , new BeanPropertyRowMapper(WebSiteBean.class)); return list; } }

Dao实现类,这里注入我们需要的JdbcTemplate,然后通过JdbcTemplate提供的接口进行增删查该的操作,这里我就写几个简单的,更多可以自行查看JdbcTemplate提供的api
编写Controller
@Controller @RequestMapping("/jdbc") public class WebSiteController {@Autowired private WebSiteService websiteService; @RequestMapping("query") public ModelAndView query(){ Map params = new HashMap<>(); params.put("name","Java面试必修"); List webSiteBeans = websiteService.queryWebSiteList(params); ModelAndView mav = new ModelAndView("/list"); mav.addObject("webSiteBeans",webSiteBeans); mav.addObject("hint","想学习更多面试技巧和知识,请关注公众号:Java面试必修(itmsbx)"); return mav; } }

更改Application
@SpringBootApplication public class DemoJdbcApplication {@Autowired private Environment env; //destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用. @Bean(destroyMethod ="close") public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(env.getProperty("spring.datasource.url")); dataSource.setUsername(env.getProperty("spring.datasource.username")); //用户名 dataSource.setPassword(env.getProperty("spring.datasource.password")); //密码 dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); dataSource.setInitialSize(2); //初始化时建立物理连接的个数 dataSource.setMaxActive(20); //最大连接池数量 dataSource.setMinIdle(0); //最小连接池数量 dataSource.setMaxWait(60000); //获取连接时最大等待时间,单位毫秒。 dataSource.setValidationQuery("SELECT 1"); //用来检测连接是否有效的sql dataSource.setTestOnBorrow(false); //申请连接时执行validationQuery检测连接是否有效 dataSource.setTestWhileIdle(true); //建议配置为true,不影响性能,并且保证安全性。 dataSource.setPoolPreparedStatements(false); //是否缓存preparedStatement,也就是PSCache return dataSource; }public static void main(String[] args) { SpringApplication.run(DemoJdbcApplication.class, args); } }

到这里启动服务器,浏览器输入http://localhost:8080/jdbc/query 看看效果吧
总结
本章讲解了使用JdbcTemplates访问Mysql数据库,实现了数据交互,看上去是不是还是很简单呢?不过光是JdbcTemplates还是不够的,毕竟咱们还是要深入企业主流框架,下一章我将带大家整合Mybatis框架,后面的源代码将整合一个开源的网站来进行讲解,学完这些框架之后,你也能收获一个自己动手的网站,一举多得是不是很有动力
源码地址:
https://gitee.com/rjj1/SpringBootNote/tree/master/demo-jdbc
【微服务|微服务 SpringBoot 2.0(七)(使用JdbcTemplates访问Mysql)】作者有话说:喜欢的话就请移步Java面试必修网,请自备水,更多干、干、干货等着你

    推荐阅读