SpringBoot学习(三)(整合JdbcTemplate、mybatis注解版、springdatajpa)_chunbixi5712的博客-程序员秘密

技术标签: java  开发工具  数据库  

整合之前

    1、pom.xml添加mysql依赖

        <!-- mysql 依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

    2、application.properties加入数据库连接配置

#################################数据库连接配置########
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/stuspringboot
spring.datasource.username=root
spring.datasource.password=root

一、整合JdbcTemplate

    1、pom.xml添加相关依赖

        <!-- mysql 依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- jdbcTemplate 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

    2、UserServiceImpl使用JdbcTemplate

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Transactional
    public User add(String name,Integer age) {
        User user = new User(name,age);
        jdbcTemplate.update("INSERT INTO user VALUES(?,?,?)", user.getId(), user.getName(), user.getAge());
        return  user;
    }
}

    3、  UserController

@RestController
@RequestMapping(value = "/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/add",method = RequestMethod.POST)
    public User add(String name,Integer age){
        User user = userService.add(name, age);
        return user;
    }

}

    4、启动项目测试成功

59b052e89f9f58c41ff0e0c0561c7ce6cbf.jpg7450fb03525b50b4259a4eaef20000f0f96.jpg

二、整合Mybatis(注解版)

    1、pom.xml添加依赖

        <!-- mybatis 依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

    2、UserMapper

public interface UserMapper {

    @Select("SELECT * FROM USER WHERE name = #{name}")
    User findByName(@Param("name") String name);

}

    3、UserServiceImpl

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User findByName(String name) {
        return userMapper.findByName(name);
    }

}

注入userMapper时,在IDEA环境下会报错,但是不影响使用,如果看着不爽,可以参考https://www.cnblogs.com/waterystone/p/6214212.html 解决

    4、UserController添加

    @RequestMapping(value = "/{name}",method = RequestMethod.GET)
    public User find(@PathVariable String name){
        User user = userService.findByName(name);
        return user;
    }

    5、启动类添加@MapperScan

@SpringBootApplication
@MapperScan(basePackages = "com.caofanqi.mapper")
public class Application {

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

    6、启动测试如下

        78b8be480c01402b769f3389e407656dc71.jpg

    7、整合Mybatis分页插件PageHelper

        ①pom.xml添加

        <!-- springboot 整合 pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.7</version>
        </dependency>

    ②application.properties配置文件添加

###################pagehelper分页插件#####################
logging.level.com.example.demo.dao=DEBUG
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true

    ③Mapper添加方法

    @Select("SELECT * FROM USER")
    List<User> list();

    ④UserServiceImpl添加方法,page当前页,size当前页数量

    public List<User> list(Integer page,Integer size){
        // 开启分页插件,放在查询语句上面
        PageHelper.startPage(page, size);
        //查询语句
        List<User> userList = userMapper.list();
        // 封装分页之后的数据
        PageInfo<User> pageInfoUserList = new PageInfo<User>(userList);
        //通过getList()获取分页后的数据
        return pageInfoUserList.getList();
    }

    ⑤UserController添加代码

    @RequestMapping(value = "/list/{page}/{size}",method = RequestMethod.GET)
    public List<User> list(@PathVariable Integer page,@PathVariable Integer size){
        return userService.list(page,size);
    }

    ⑥运行测试如下

7c3fcfcf59dd989f2e342f156d9f915eece.jpg32e642e60f658cb6057af9cb702bffd127d.jpg

 

三、整合SpringDataJpa

    1、pom.xml添加

        <!-- 整合 springdatajpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

    2、实体类

package com.caofanqi.entity;

import com.caofanqi.util.StringUtil;
import lombok.Data;

import javax.persistence.*;

@Data
@Entity(name="user")
public class User {

    /**
     * JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO. 
     * TABLE:使用一个特定的数据库表格来保存主键。 
     * SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。 
     * IDENTITY:主键由数据库自动生成(主要是自动增长型) 
     * AUTO:主键由程序控制,如果不指定主键生成策略,默认为AUTO
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private String id;

    private String name;

    private Integer age;
    /**
     * 对应的数据库字段,默认驼峰命名法,如果不一致可以通过@Column的name属性修改
     */
    @Column(name = "id_card")
    private String idCard;

    public User(String name, Integer age) {
        this.id = StringUtil.guid();
        this.name = name;
        this.age = age;
    }
}

    3、UserDao

package com.caofanqi.dao;

import com.caofanqi.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserDao extends JpaRepository<User,String> {

    /**
     * 可以通过@Query,并设置nativeQuery = true,写SQL语句
     * 注意:LIMIT 的以一个参数是起始行数 =(当前页-1)* pageSize
     */
    @Query(value = "SELECT * FROM user LIMIT ?1,?2",nativeQuery = true)
    List<User> list(Integer startRow, Integer pageSize);
}

    4、UserServiceImpl添加userDao注入和方法

    @Autowired
    private UserDao userDao;

    public User findById(String id){
        Optional<User> opUser = userDao.findById(id);
        return opUser.get();
    }

    5、UserController添加方法

    @RequestMapping(value = "/find/{id}",method = RequestMethod.GET)
    public User findById(@PathVariable String id){
        User user =   userService.findById(id);
        return user;
    }

    6、启动运行如下

        fa5cb2146c9e79e47542c27ead920f463eb.jpg

 

项目源码:https://gitee.com/itcaofanqi/CaoFanqiStudyRepository/tree/master/stuspringboot/

转载于:https://my.oschina.net/caofanqi/blog/3010732

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chunbixi5712/article/details/100819745

智能推荐

2021年中国新型智慧城市百佳案例 附下载_互联互通社区的博客-程序员秘密

在第一届中国新型智慧城市建设峰会主论坛上,国家信息中心公布了第一届中国新型智慧城市创新应用大赛获奖名单,总计326个项目胜出,并遴选出138个优秀项目编入《2021年中国新型智慧城市百佳案...

Ubuntu - 硬盘分区、格式化、自动挂载配置_ubuntu格式化硬盘_ascetictor的博客-程序员秘密

转载自:http://www.cnblogs.com/hnrainll/archive/2012/02/27/2369331.html统的硬盘空间不够用了,需要增加新的硬盘扩容。将硬盘分区、格式化、自动挂载配置的整个过程记下来,备忘。运行环境 | EnviromentUbuntu 10.10一、硬盘分区 | Hard disk add new parti

SpringCloud知识点梳理 - 3.服务调用与服务负载均衡组件之OpenFeign组件_神明在左的博客-程序员秘密

OpenFeign组件Q:使用Ribbon +RestTemplate已经可以完成服务间的调用,为何还要使用feign?String restTemplateForObject = restTemplate.getObject("http://服务名/url?参数" + name,String.class);存在问题:①每次调用时都需要写以上代码,存在大量的代码冗余;②服务地址若修改,维护成本较高;③使用时不够灵活;说明:Feign是一个声明式的http客户端,它使得http客户端变得更

ora-01033:oracle initialization or shutdown in progress 解决方法_雨醉风尘的博客-程序员秘密

概要::shutdown-startup-alter-shutdown-startup //登陆到dos环境1------cmd; //以DBA用户登录2---sqlplus /nolog ---connect sys/Cugb1101 as sysdba 3-----shutdown normal提示:数据库已经关闭 已经卸载数

Linux系统和Windows系统Yarn 安装与使用教程_linux 安装yarn_森明帮大于黑虎帮的博客-程序员秘密

文章目录一、官网指引二、Yarn介绍三、Yarn优点四、window 系统安装 Yarn1.下载安装包安装2.通过Chocolatey安装3.通过 Scoop 安装五、Linux系统安装 Yarn1.官网脚本执行一键安装2.通过npm安装1.Linux安装npm3.安装成功后查看版本六、Yarn 常用命令1.初始化新项目2.添加依赖包3.将依赖项添加到不同依赖项类别4.升级依赖包5.移除依赖包6.安装package.json里的包依赖,并将包及它的所有依赖项保存进yarn.lock7.发布包8.运行脚本9.

随便推点

http请求post,返回excel文件,并接收_weixin_30843605的博客-程序员秘密

1.post的方法里要加responseType: 'arraybuffer'参数,不然下载的excel会乱码2.使用{type: "application/vnd.ms-excel"}的写法,可以保存为xls格式的excel文件(兼容老版本)。而使用“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”则会保存为...

Java基础 接口实现 设计一个形状类(接口)Shape,方法:求周长和求面积_设计一个几何形状类shape,拥有求面积和求周长的方法及有一个表示形状的字符串属性_似水流年ysl的博客-程序员秘密

题目:设计一个形状类(接口)Shape,方法:求周长和求面积形状类(接口)的子类(实现类);:Rect(矩形),Circle(圆形)Rect类的子类:Square(正方形)不同的子类会有不同的计算周长和面积的方法。创建三个不同的形状对象,放在Shape类型的数组里,分别打印出每个对象的周长和面积。形状接口public interface Shape { // 求面积方法 double getArea(); // 求周长方法 double getPerimeter();}圆形类pub

龙格库塔(runge-kutta,RK)法求解微分方程_rk法_暴躁的野生猿的博客-程序员秘密

求解微分方程的意思就是,已知导函数,求原函数。先声明一点,欧拉法、中值法、龙哥库塔法求解微分方程,得出的结果不是表达式,而是一系列离散点。一、欧拉法递推问题描述:已知y'=f(x,y),求y(x)。例题:已知y'=y,y(0)=1,求y(x)。解:这个题目高数知识很容易求解,答案是y=e^x。但是这里我们不使用解析法,而使用迭代递推法去求y(x)。把y(x)在x0处泰勒展开...

centos虚拟机安装MySQL数据库的报错_虚拟机中mysql-v错误_莫韵的博客-程序员秘密

关于我想把爬取的数据保存在数据库中,而虚拟机安装数据库出现种种报错。前几天我用scrapy在网站上爬取了一些数据,本打算在centos虚拟机中安装个mysql数据库,可是种种报错,今天正好来了兴趣便开始网上搜各种资料以便于解决问题。一开始我是用的centos的yum源下载mariadb,可是就是没办法打开。后来就打算在网上下载mysql用secureCRT的rz直接传到了虚拟机上,然后经过解压到虚拟机里,就这样错误开始出现。一.mysql启动时报错,忘了报的啥错,其中有一个指向我的localhost.

Qt + Dlib + Opencv 人脸识别(一)——环境相关_qt人脸识别项目实习目的_不会就要好好学的博客-程序员秘密

Qt + Dlib + Opencv 人脸识别(一)——环境相关本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体...

php读取json字符串数组,php中json字符串转换为数组后获取值_沧海涂龟的博客-程序员秘密

php中json字符串转换为数组后获取值(2015-06-30 16:35:55)标签:it分类:php*******php$js ='{"Message":{"MessageType":"GetCouponsListResp","MessageBody":{"CouponsList":{"Coupons":[{"couponid":"85","couponcode":"a"},{"couponi...

推荐文章

热门文章

相关标签