本文共 6653 字,大约阅读时间需要 22 分钟。
摘要:本文主要讲解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访问数据库,我们可以直接把对数据库的操作写在业务层即可;这里我们写几个增删改查方法示例一下。首先,此文演示的接口和业务层结构如下,是比较传统的分层结构:
代码如下:
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 ListgetUserByProvinceAndCity(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); ListgetUserByProvinceAndCity(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 ListgetUserByProvinceAndCity(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
附建表语句:
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的拼接。
点击阅读原文,查看完整源码。
与其相忘江湖,不如点赞关注
本文为 java4all (公众号:java4all)原创
欢迎转载,请注明出处或文末给出二维码
谢谢!
转载地址:https://it4all.blog.csdn.net/article/details/89037695 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!