(四)springboot整合mybatis

    1、以mysql为例,在pom文件中添加如下依赖,依次为mybatis、jdbc、db pool依赖

        <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>

    2、在application.properties 文件中进行配置,springboot2.0会自动匹配jdbc连接,也可以通过spring.datasource.driver-class-name =com.mysql.jdbc.Driver 进行设置

#数据库url
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
#用户名、密码
spring.datasource.username =root
spring.datasource.password =root
#如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource),配置为阿里数据源
spring.datasource.type =com.alibaba.druid.pool.DruidDataSource
#输出log到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

    3、设置好之后,我们在数据库中创建一个user表

CREATE TABLE `user` (
`id` int(15) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(80) DEFAULT NULL COMMENT '用户姓名',
`phone` varchar(16) DEFAULT NULL COMMENT '用户手机号',
`createTime` datetime DEFAULT NULL COMMENT '创建时间',
`age` int(4) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

    4、写一个domain对象用于dao层操作user表

package com.zc.mybatis.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

public class User {

    private int id;

    private String name;

    private String phone;

    private int age;
//设置日期格式
@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
private Date createTime; ......省略get、set方法

    5、创建接口类,用注解方式操作数据库

/**
*
*/
package com.zc.mybatis.mapper; import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.zc.mybatis.domain.User; public interface UserMapper { //添加用户

@Insert("INSERT INTO user(name,phone,createTime,age) VALUES(#{name}, #{phone}, #{createTime},#{age})")
     @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") //主键自增,生成的值将注入对象中  
     void insertUser(User user) throws Exception;

    //查询用户
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(int id);
//查询所有用户
List<User> getUsers();
//更新用户
@Update("UPDATE user SET name=#{name},phone=#{phone},createTime=#{createTime},age=#{age} WHERE id =#{id}")
void updateUser(User user);
//删除用户
@Delete("DELETE FROM user where id = #{id}")
void deleteUserById(int id);
}

    6、创建对应的servce层,对应增删改查对应写出方法就可以了,我这里只写接口实现,其中需要注意的是,userMapper需要通过IOC注入进行使用

    @Autowired
private UserMapper userMapper;
  //增  
@Override
public int add(User user) {
try {
userMapper.insertUser(user);
} catch (Exception e) {
e.printStackTrace();
}
int id = user.getId();
return id;
}   //查询    
@Override
public User getUserById(int id) { User user = userMapper.getUserById(id);
return user;
}
  //查询所有
@Override
public List<User> getUsers() {
List<User> users = userMapper.getUsers();
return users;
}   //删除
@Override
public void deleteUserById(Long id) {
userMapper.deleteUserById(id); }
//改
@Override
public void updateUser(User user) { userMapper.updateUser(user); }

    7、写对应controller,然后返回json格式,就可以从页面查看了,通过localhost:8080/user/add新增数据到数据库,然后访问localhost:8080/user/getUsers

@RestController
@RequestMapping("/user")
public class UserController { @Autowired
private UserService userService; @GetMapping("add")
public int add() {
User user = new User();
user.setAge(12);
user.setName("张三");
user.setPhone("888888888");
user.setCreateTime(new Date());
int id = userService.add(user);
return id;
} @GetMapping("getUserById")
public User getUser(int id) {
User user = userService.getUserById(id);
System.out.println(user.getCreateTime().toString());
return user;
} @GetMapping("getUsers")
public List<User> getUsers() {
List<User> users = userService.getUsers();
User user = null;
for (int i = 0; i < users.size(); i++) {
user = users.get(i);
System.out.println("用户id:" + user.getId() + "姓名" + user.getName());
}
return users; } @GetMapping("deleteUserById")
public void deleteUserById(Long id) {
User user = null; int userId = Integer.parseInt(id.toString()); user = userService.getUserById(userId); userService.deleteUserById(id);
System.out.println("删除用户的用户名为:" + user.getName()); }
@GetMapping("addAcount")
public void addAcount() {
int id = userService.addAcount(); } }

 

springboot 学习笔记(四)的更多相关文章

  1. SpringBoot学习笔记四之后台登录页面的实现

    注:图片如果损坏,点击文章链接: https://www.toutiao.com/i6803542216150090252/ 继续之前完成的内容,首先创建一个常量类 常量类的内容 服务器端渲染 前后端 ...

  2. SpringBoot学习笔记(2):引入Spring Security

    SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...

  3. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  4. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  5. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  6. SpringBoot学习笔记

    SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...

  7. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  8. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. Springboot学习笔记(六)-配置化注入

    前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...

  10. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

随机推荐

  1. Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术

    Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术 这里主要是针对EP3C系列FPGA的Nios程序固化到EPCS中的方法做简要说明.硬件 ...

  2. sharepoint 2013 创建母版页

    一.创建新的母版页, 并添加了新的样式表 1.从CodePlex 上获得Starter Master Pages for SharePoint 2010 或复制以下母版代码 <%@Master  ...

  3. 115个Java面试题和答案

    面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...

  4. redis 有用 Sorted-Set 应用场景

    1.1.1Set数据类型的 使用场景 1.可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息.对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中 ...

  5. Java基础——深入剖析Java中的装箱和拆箱

    (转自:http://www.cnblogs.com/dolphin0520/p/3780005.html) 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若 ...

  6. 8、泛型程序设计与c++标准模板库2.5容器适配器

    容器适配器是用来扩展7中基本容器的,是修改和调整其他类接口的类.他们不提供存放数据的实际数据结构的实现方法,而且容器适配器也不支持迭代器. 1.标准栈容器 使用STL中的标准栈为程序员提供了一层附加的 ...

  7. 聪明的kk (南洋理工—171)

    #include<iostream> using namespace std; ][]; ][]; int N, M; int dp(int i, int j) { ) return d[ ...

  8. MVC下使用日期控件

    初学MVC,使用日期控件的时候发现不是特别理想,本来是想直接使用JQuery的日期控件的,发现支持的不是很好,type类型要改成date才能使用,而且编辑的时候使用@Html.EditFor也不能绑定 ...

  9. bat实现监测计算机无线连接,断网自动重启无线

    @echo off :Begin ping www.baidu.com if errorlevel 1 goto Reboot if errorlevel 0 goto Continue :Conti ...

  10. vue-cli目录结构及说明

    使用vue-cli有时会出现一些莫名的问题,清楚项目的结构文件及其意义方便更好的开发和解决问题,介绍如下: build/ // 项目构建(webpack)相关代码 build.js // 生产环境构建 ...