SpringBoot------整合MyBatis
1.添加pom.xml需要的依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>top.ytheng</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <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-thymeleaf</artifactId>
</dependency> <!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
<scope>runtime</scope>
</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>
</dependencies> <build>
<!-- 打包的名称 -->
<finalName>myspringboot</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.添加Entity
package top.ytheng.demo.entity; import org.springframework.stereotype.Component;
import java.lang.String;
import java.util.Date; public class UserInfo {
private int id;
private String username;
private String password;
private Date createTime; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public UserInfo() {
super();
}
public UserInfo(String username, String password) {
super();
this.username = username;
this.password = password;
}
}
3.添加UserMapper.java
package top.ytheng.demo.mapper; import java.util.List; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import top.ytheng.demo.entity.UserInfo; public interface UserMapper { //#{}里面的名称要和UserInfo里面的一一对应
//推荐使用#{},不要使用${},会存在注入风险
@Insert("Insert INTO user_info(username,password) VALUES(#{username},#{password})")
//保存对象,获取数据库自增id
//keyProperty对应UserInfo对象中的id
//keyColumn对应数据库user_info表中的id
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
int insert(UserInfo user); //查找全部
@Select("SELECT * FROM user_info")
@Results({
@Result(column="create_time", property="createTime"),
//@Result(column="update_time", property="updateTime"),
})
List<UserInfo> getAll(); //根据id找对象
@Select("SELECT * FROM user_info WHERE id = #{id}")
@Results({
@Result(column="create_time", property="createTime"),
})
UserInfo findById(int id); //更新对象
@Update("UPDATE user_info SET username= #{username} WHERE id = #{id}")
void update(UserInfo user); //删除对象
@Delete("DELETE FROM user_info WHERE id = #{userid}")
void delete(int userid);
}
4.添加UserService.java
package top.ytheng.demo.service;
import java.util.List;
import top.ytheng.demo.entity.UserInfo;
public interface UserService {
public int add(UserInfo user);
public List<UserInfo> getAll();
public UserInfo findById(int id);
public void update(UserInfo user);
public void delete(int id);
}
5.添加UserServiceImpl.java
package top.ytheng.demo.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import top.ytheng.demo.entity.UserInfo;
import top.ytheng.demo.mapper.UserMapper;
import top.ytheng.demo.service.UserService; @Service
public class UserServiceImpl implements UserService { @Autowired
private UserMapper userMapper; @Override
public int add(UserInfo user) {
// TODO Auto-generated method stub
userMapper.insert(user);
int id = user.getId();
return id;
} @Override
public List<UserInfo> getAll() {
// TODO Auto-generated method stub
List<UserInfo> users = userMapper.getAll();
return users;
} @Override
public UserInfo findById(int id) {
// TODO Auto-generated method stub
UserInfo user = userMapper.findById(id);
return user;
} @Override
public void update(UserInfo user) {
// TODO Auto-generated method stub
userMapper.update(user);
} @Override
public void delete(int id) {
// TODO Auto-generated method stub
userMapper.delete(id);
}
}
6.添加Controller
package top.ytheng.demo.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import top.ytheng.demo.entity.UserInfo;
import top.ytheng.demo.service.UserService; @RestController
@RequestMapping("/api/v1/user")
public class UserController { @Autowired
private UserService userService; @GetMapping("/add")
public Object add() {
UserInfo user = new UserInfo();
user.setUsername("theng");
user.setPassword("123456");
int id = userService.add(user);
return id;
} @GetMapping("/getall")
public Object getAll() {
List<UserInfo> users = userService.getAll();
return users;
} @GetMapping("/findbyid")
public Object findById(@RequestParam(name="id")int id) {
UserInfo user = userService.findById(id);
return user;
} @GetMapping("/update")
public Object update() {
UserInfo user = userService.findById(2);
user.setUsername("朱竹清");
userService.update(user);
return "update success";
} @GetMapping("/delete")
public Object delete(@RequestParam(name="id")int id) {
userService.delete(id);
return "delete success";
}
}
7.添加配置文件application.properties
#端口号
server.port=8080 #数据库的一些配置
#mybatis.type-aliases-package=top.ytheng.demo
#会自动识别
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
#使用阿里巴巴数据源,默认的数据源(com.zaxxer.hikari.KikariDataSource)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#开启控制台打印sql
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
8.添加启动类
package top.ytheng.demo; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication //等于下面3个
//@SpringBootConfiguration
//@EnableAutoConfiguration
//@ComponentScan
//拦截器用到
@ServletComponentScan
//MyBatis用到
@MapperScan("top.ytheng.demo.mapper")
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
9.安装MySQL数据库,添加数据库shop,表user_info

10.右键项目Run As启动,访问url
http://localhost:8080/api/v1/user/getall
http://localhost:8080/api/v1/user/add
http://localhost:8080/api/v1/user/findbyid?id=1
http://localhost:8080/api/v1/user/update
http://localhost:8080/api/v1/user/delete?id=10
另附:


SpringBoot------整合MyBatis的更多相关文章
- SpringBoot整合Mybatis之项目结构、数据源
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
- SpringBoot整合Mybatis【非注解版】
接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 选择Spring Initializr,配置JDK版本 输入项目名 选择构建web项目所需的state ...
- SpringBoot整合Mybatis注解版---update出现org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]
SpringBoot整合Mybatis注解版---update时出现的问题 问题描述: 1.sql建表语句 DROP TABLE IF EXISTS `department`; CREATE TABL ...
- springboot学习随笔(四):Springboot整合mybatis(含generator自动生成代码)
这章我们将通过springboot整合mybatis来操作数据库 以下内容分为两部分,一部分主要介绍generator自动生成代码,生成model.dao层接口.dao接口对应的sql配置文件 第一部 ...
- springboot整合mybatis出现的一些问题
springboot整合mybatis非常非常的简单,简直简单到发指.但是也有一些坑,这里我会详细的指出会遇到什么问题,并且这些配置的作用 整合mybatis,无疑需要mapper文件,实体类,dao ...
- springBoot整合mybatis、jsp 或 HTML
springBoot整合mybatis.jsp Spring Boot的主要优点: 1: 为所有Spring开发者更快的入门: 2: 开箱即用,提供各种默认配置来简化项目配置: 3: 内嵌式容器 ...
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...
- SpringBoot整合Mybatis完整详细版二:注册、登录、拦截器配置
接着上个章节来,上章节搭建好框架,并且测试也在页面取到数据.接下来实现web端,实现前后端交互,在前台进行注册登录以及后端拦截器配置.实现简单的未登录拦截跳转到登录页面 上一节传送门:SpringBo ...
- SpringBoot整合Mybatis完整详细版
记得刚接触SpringBoot时,大吃一惊,世界上居然还有这么省事的框架,立马感叹:SpringBoot是世界上最好的框架.哈哈! 当初跟着教程练习搭建了一个框架,传送门:spring boot + ...
- 【SpringBoot系列1】SpringBoot整合MyBatis
前言: 一直看网上说SpringBoot是解锁你的配置烦恼,一种超级快速开发的框架.一直挺想学的,正好最近也有时间,就学了下 这个是SpringBoot整合MyBatis的一个教程,用了阿里的drui ...
随机推荐
- redis:order set有序集合类型的操作(有序集合)
1. order set有序集合类型的操作(有序集合) 有序集合是在无序集合的基础上加了一个排序的依据,这个排序依据叫score,因此声明一个集合为有序集合的时候要加上score(作为排序的依据) 1 ...
- boost::lockfree::queue多线程读写实例
最近的任务是写一个多线程的东西,就得接触多线程队列了,我反正是没学过分布式的,代码全凭感觉写出来的,不过运气好,代码能够work= = 话不多说,直接给代码吧,一个多消费者,多生产者的模式.假设我的任 ...
- angular学习笔记(2)- 前端开发环境
angular1学习笔记(2)- 前端开发环境 1.代码编辑工具 2.断点调试工具 3.版本管理工具 4.代码合并和混淆工具 5.依赖管理工具 6.单元测试工具 7.集成测试工具 常见的前端开发工具 ...
- 【搜索】WAR大佬的SET @upcexam6201
时间限制: 1 Sec 内存限制: 128 MB 题目描述 WAR大佬认为一个包含重复元素的集合认为是优美的,当且仅当集合中的元素的和等于他们的积. 求包含n个元素的优美的集合的个数. WAR大佬当然 ...
- Gird Layout代码解释
<div class="wrapper"> <!--定义一个类名为wrapper的div盒子--> <div class="one" ...
- pygame 笔记-5 模块化&加入敌人
上一节,已经用OOP方法,把几个类抽象出来了,但是都集中在一个.py文件中,代码显得很冗长,这一节复用模块化的思想,把这个大文件拆分成几个小文件: 先把主角Player单独放到一个文件player.p ...
- Deepin 15.4 个性化设置
2017.10.03,开始使用 Deepin 15.4.1 桌面系统 Chrome 版本 60.0.3112.78(正式版本) (64 位) 1.开启 ls 别名: vim .bashrc 去掉以下代 ...
- PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法
PL/SQL查询时,如果Number(17)以上的大数,会显示为科学计数法 解决方法: TOOLS->PREFERENCES->WINDOW TYPE->SQL WINDOW下选中N ...
- 网络编程之 keepalive(zz)
link1: http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ link2: http://dev.csdn.net/article/849 ...
- 命令行:增强版 | Linux 中国
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/83542677 以下就是我如今使用的用于 ...