(9)SpringBoot使用JdbcTemplate访问数据库
发布日期:2021-06-30 11:08:08 浏览次数:2 分类:技术文章

本文共 6653 字,大约阅读时间需要 22 分钟。

640?wx_fmt=png

   摘要:本文主要讲解SpringBoot使用JdbcTemplate访问数据库。

前面我们已经讲了,,本文讲述如何使用JdbcTemplate访问数据库。这三种技术,应该如何选型,网上众说纷纭,这个还得看公司的业务类型,这里就不做分析。

JdbcTemplate的使用,也是很简单的:引入依赖-->配置数据源-->引入JdbcTemplate模板-->调用模板方法,具体使用细节如下。

1.pom.xml

引入JdbcTemplate必要的依赖

       
           
mysql
           
mysql-connector-java
       
       
           
org.springframework.boot
           
spring-boot-starter-jdbc
       

2.application.properties

使用JdbcTemplate没有什么额外配置,我们只需要配置好数据库即可。

# mysql   spring.datasource.url=jdbc:mysql://22.22.22.22/ss   spring.datasource.username=root   spring.datasource.password=xxxxxx spring.datasource.driver-class-name=com.mysql.jdbc.Driver  

3.service层

使用JdbcTemplate访问数据库,我们可以直接把对数据库的操作写在业务层即可;这里我们写几个增删改查方法示例一下。首先,此文演示的接口和业务层结构如下,是比较传统的分层结构:

640?wx_fmt=png

代码如下:

3.1JDBCTemplateController.java

接口类中没有什么需要强调的,内容如下:

package com.java4all.controller; import com.java4all.entity.User; import com.java4all.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.List; /**  * Author: momo  * Date: 2018/4/3  * Description:演示JDBCTemplate  */ @RestController @RequestMapping("jdbcUser") public class JDBCTemplateController {
   @Autowired    private UserService userService;    @RequestMapping(value = "getCount",method = RequestMethod.GET)    public Integer getCount(){
       Integer count = userService.getCount();        return count;    }    @RequestMapping(value = "deleteUserById",method = RequestMethod.GET)    public void  deleteUserById(Integer id){
       userService.deleteUserById(id);    }    @RequestMapping(value = "updateUserById",method = RequestMethod.GET)    public void  updateUserById(String userName,Integer id){
       userService.updateUserById(userName,id);    }    @RequestMapping(value = "getUserByProvinceAndCity",method = RequestMethod.GET)    public List
 getUserByProvinceAndCity(String province,String city){
       List
list = userService.getUserByProvinceAndCity(province, city);        return list;    } }
3.2UserService.java

package com.java4all.service; import com.java4all.entity.User; import java.util.List; /**  * Author: momo  * Date: 2018/3/29  * Description:  */ public interface UserService {
   User getById(Integer id);    Integer getCount();    void deleteUserById(Integer id);    void updateUserById(String userName,Integer id);    List
getUserByProvinceAndCity(String province, String city); }
3.3UserServiceImpl.java

我们在此实现类中,@Autowired引入JdbcTemplate,然后就可以使用模板类的增删改查等方法了。

package com.java4all.serviceImpl; import com.java4all.dao.UserDao; import com.java4all.entity.User; import com.java4all.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /**  * Author: momo  * Date: 2018/3/29  * Description:  */ @Service public class UserServiceImpl implements UserService {
   @Autowired    private UserDao userDao;    @Autowired    private JdbcTemplate jdbcTemplate;    @Override    public User getById(Integer id) {
       User user = userDao.getById(id);        return user;    }    /**       JdbcTemplate      */    @Override    public Integer getCount() {
       String sql = "SELECT COUNT(*) FROM user";        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);        return count;    }    @Override    public void deleteUserById(Integer id) {
       String sql = "delete from user where id = ?";        jdbcTemplate.update(sql,id);    }    @Override    public void updateUserById(String userName,Integer id) {
       String sql = "update user set user_name = ? where id = ?";        jdbcTemplate.update(sql,userName,id);    }    @Override    public List
getUserByProvinceAndCity(String province, String city) {
       //错误写法,如果打印出此sql,会发现?还是?,并没有被参数替换掉        String sql = "select * from user where 1= 1 and province = ? and city = ?";        String sql2 = "select * from user where 1= 1 and province ='"+ province +"' and city ='"+city + "'";        List
> list = jdbcTemplate.queryForList(sql2);        List
listRe = new ArrayList<>();        for(int i = 0 , length = list.size();i < length; i ++){
           Map
map = list.get(i);            User user = new User();            //这个map转为实体的方式,可以抽取出来,其他方法可复用            user.setId((int)map.get("id"));            user.setUserName((String)map.get("user_name"));            user.setRealName((String)map.get("real_name"));            user.setPassword((String)map.get("password"));            user.setCountry((String)map.get("country"));            user.setProvince((String)map.get("province"));            user.setCity((String)map.get("city"));            user.setPhone((String)map.get("phone"));            user.setCreateTime((Date) map.get("create_time"));            user.setDevLanguage((String)map.get("dev_language"));            user.setSchoolName((String)map.get("school_name"));            user.setSchoolMajor((String)map.get("school_major"));            listRe.add(user);        }        return listRe;    } }

附建表语句:

CREATE TABLE `user` (   `id` int(32) NOT NULL AUTO_INCREMENT,   `user_name` varchar(32) DEFAULT NULL COMMENT '用户名',   `real_name` varchar(32) DEFAULT NULL COMMENT '真实姓名',   `password` varchar(32) DEFAULT NULL COMMENT '密码',   `country` varchar(11) DEFAULT NULL COMMENT '省',   `province` varchar(11) DEFAULT NULL COMMENT '市',   `city` varchar(11) DEFAULT NULL COMMENT '县',   `phone` varchar(32) DEFAULT NULL COMMENT '电话',   `create_time` date DEFAULT NULL COMMENT '创建时间',   `dev_language` varchar(11) DEFAULT NULL COMMENT '开发语言',   `school_name` varchar(32) DEFAULT NULL COMMENT '学校',   `school_major` varchar(32) DEFAULT NULL COMMENT '大学专业',   PRIMARY KEY (`id`),   KEY `user_name_index` (`user_name`),   KEY `school_major_index` (`school_major`) ) ENGINE=InnoDB AUTO_INCREMENT=1600003 DEFAULT CHARSET=utf8

User实体在一文中已经给出,这里不再黏贴。

添加,更新,删除,查询单个对象,都比较简单,这里重点注意查询列表,上面的方法,查询出的列表,里面是map的格式,需要我们手动转换一下,我们可以把这个转换过程抽取出来,其他的查询列表方法也可以复用;而且,注意sql的拼接。

点击阅读原文,查看完整源码。

640?wx_fmt=gif

与其相忘江湖,不如点赞关注

本文为  java4all (公众号:java4all)原创

欢迎转载,请注明出处或文末给出二维码

谢谢!

转载地址:https://it4all.blog.csdn.net/article/details/89037695 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:(16)SpringBoot整合RabbitMQ
下一篇:(10)SpringBoot创建定时任务

发表评论

最新留言

不错!
[***.144.177.141]2024年04月28日 12时02分13秒