springboot 学习笔记(四)
(四)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 学习笔记(四)的更多相关文章
- SpringBoot学习笔记四之后台登录页面的实现
注:图片如果损坏,点击文章链接: https://www.toutiao.com/i6803542216150090252/ 继续之前完成的内容,首先创建一个常量类 常量类的内容 服务器端渲染 前后端 ...
- SpringBoot学习笔记(2):引入Spring Security
SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- SpringBoot学习笔记
SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Springboot学习笔记(六)-配置化注入
前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
随机推荐
- Structuring Machine Learning Projects 笔记
1 Machine Learning strategy 1.1 为什么有机器学习调节策略 当你的机器学习系统的性能不佳时,你会想到许多改进的方法.但是选择错误的方向进行改进,会使你花费大量的时间,但是 ...
- 36.浅谈DLL劫持
最近在搞内网,需要实现免杀后门,大佬推荐了dll劫持,DLL劫持后,能干很多事情,比如杀软对某些厂商的软件是实行白名单的,你干些敏感操作都是不拦截,不提示的.还有留后门,提权等等.本文主要介绍如何检测 ...
- SQLServer数据库权限设置--保障数据库安全
一.登陆界面引入 下图为SQL Server的登陆界面. 1)服务器名称:“.”代表本地计算机,选择下拉框,可以看见还有一个与本机机名相同的内容,也代表于本地服务器连接:要连接远程服务器的话,在此处填 ...
- jquery事件之事件委托和事件切换
一.事件委托函数: 方法名 说明 语法 (events 事件类型,data数据,handler 事件处理函数,selector 选择器) live 用于为指定元素的一个或多个事件绑定事件处理函数. j ...
- 【Java】NIO中Selector的创建源码分析
在使用Selector时首先需要通过静态方法open创建Selector对象 public static Selector open() throws IOException { return Sel ...
- Python实现返回指定范围内的所有素数
# 获取a, b范围的所有素数 def func(a, b): li = [] for i in range(a, b+1): for j in range(2, i): if i % j == 0: ...
- 洛谷P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...
- Ryzen 移动平台上安装 Gentoo Linux
Linux 内核对于跟进支持 Ryzen 移动低压 CPU 的热情似乎和市面上寥寥无几的 Ryzen 笔记本热度十分吻合.虽然从 Linux 4.11 起就对 Ryzen 桌面 CPU 有较好的支持, ...
- QQ音乐MP3下载
QQ音乐MP3下载 没错本次写的内容的对象是我们熟知的QQ Music. 本篇文章涉及内容包括:Python,爬虫,json解析,request 库的使用 缘起 前几天刷B站无意中又刷到了一首神曲,“ ...
- [USACO08JAN]跑步Running dp
题目描述 The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ...