Spring boot jdbc 自定义SQL查询

来源:互联网 发布:ubuntu如何安装福昕 编辑:程序博客网 时间:2024/09/21 08:42

闲来没事,中午学了spring boot 感觉还不错,避免了繁琐的配置文件,提高开发效率还不错。个人认为spring boot也就简化配置而已。在学习中也遇到一些问题,@Autowired无法自动装入bean,是由于对spring boot 不够了解,先上代码吧


项目结构

项目说名,spring boot jdbcTemplate自定义sql 查找mysql 数据库数据
maven结构
基本的controller service serviceimpl 就不用说了
Data 是自己的工具类,
这里写图片描述

建好项目后先搞pom.xml,用到什么加什么依赖,仓库没有的话,下载慢的话可以配置阿里的镜像maven仓库,速度不错,比国外的块多了,方法:maven 的setting.xml 只需加入
这里写图片描述

pom.xml
我的pom.xml 是用到什么引入什么。大家不一定和我的一样,有些是必须的,

<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-test</artifactId>        <scope>test</scope>    </dependency>     <dependency>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-web</artifactId>      </dependency>    <dependency>          <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-data-jpa</artifactId>    </dependency>    <dependency>          <groupId>mysql</groupId>          <artifactId>mysql-connector-java</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-jdbc</artifactId>    </dependency>    <dependency>        <groupId>com.alibaba</groupId>        <artifactId>fastjson</artifactId>        <version>1.2.21</version>    </dependency></dependencies><build>    <plugins>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>        </plugin>    </plugins></build>

属性配置文件applocations.properties

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/zanghan
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

server.port=8080
server.session.timeout=10
server.tomcat.uri-encoding=UTF-8

Application为程序入口

package com.zanghan.myProject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {

public static void main (String [] args){    SpringApplication.run(Application.class, args);}

}

UserService 接口

package com.zanghan.myProject.service;

import org.springframework.stereotype.Component;

import com.zanghan.myProject.Data.IDataset;

@Component //这个不加的话,@Autowired将找不到bean
public interface UserService {

public IDataset queryUserList();

}

UserserviceImpl 实现类

package com.zanghan.myProject.serviceImpl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zanghan.myProject.Data.BaseDAO;
import com.zanghan.myProject.Data.IDataset;
import com.zanghan.myProject.service.UserService;

@Service
public class UserServiceImpl implements UserService {

@Autowiredprivate BaseDAO baseDAO;@Overridepublic IDataset queryUserList() {    String sql = "select * from user";    return baseDAO.query(sql,null);}

}

UserController控制器

package com.zanghan.myProject.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zanghan.myProject.Data.IDataset;
import com.zanghan.myProject.service.UserService;

@RestController
@RequestMapping(“/user”)
public class UserController {
@Autowired
private UserService userService;

@RequestMapping("/getUsers")public IDataset getUserList(){    IDataset userList=userService.queryUserList();    return userList;}

}
运行直接访问
localhost:8080/user/getUsers/
可根据你传的sql得到数据库的数据,

不使用我的工具类,同样实现方式*
工具类为读写分离实现,BaseDao封装jdbcTemplate处理,IDataset 是对json数据的处理接收,当然也可以不用工具类,sql ,jdbcTemplate处理.也就是修改接收查到的数据格式而已

service 层

@Component //这个不加的话,@Autowired将找不到bean
public interface UserService {

public List<Map<String, Object>> queryUserList();

}

serviceImpl实现层

public class UserServiceImpl implements UserService {

@Autowiredprivate JdbcTemplate jdbcTemplate;public List<Map<String, Object>> queryUserList(){    String sql = "select * from appuser";    List<Map<String, Object>> list =  jdbcTemplate.queryForList(sql);    return list;}

}
控制层便不写了,同样调用service ,数据接收不同而已