SSM框架再熟悉不过了,不过以前通常是使用XML写SQL语句

这里用SpringBoot整合Mybatis并且使用注解进行开发

依赖:

        <!-- Mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>

配置:不需要指定驱动类,SpringBoot会自动扫描:com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=xuyiqing
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

user表:

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`phone` varchar(16) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`age` int(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

对应实体类:

package org.dreamtech.springboot.domain;

import java.util.Date;

public class User {
private int id;
private String name;
private String phone;
private int age;
private Date createTime; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public Date getCreateTime() {
return createTime;
} public void setCreateTime(Date createTime) {
this.createTime = createTime;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", phone=" + phone + ", age=" + age + ", createTime=" + createTime
+ "]";
}
}

添加用户的Demo做整合

Mapper:

package org.dreamtech.springboot.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.dreamtech.springboot.domain.User; public interface UserMapper {
@Insert("INSERT INTO user(name,phone,create_time,age) VALUES(#{name},#{phone},#{createTime},#{age})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int insert(User user);
}

Service:

package org.dreamtech.springboot.service;

import org.dreamtech.springboot.domain.User;

public interface UserService {
int add(User user);
}
package org.dreamtech.springboot.service.impl;

import org.dreamtech.springboot.domain.User;
import org.dreamtech.springboot.mapper.UserMapper;
import org.dreamtech.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper; @Override
public int add(User user) {
userMapper.insert(user);
int id = user.getId();
return id;
} }

Controller:

package org.dreamtech.springboot.controller;

import java.util.Date;

import org.dreamtech.springboot.domain.User;
import org.dreamtech.springboot.service.UserService;
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.RestController; @RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService; @GetMapping("/add")
private Object add() {
User user = new User();
user.setAge(18);
user.setCreateTime(new Date());
user.setName("admin");
user.setPhone("100000");
userService.add(user);
return user;
}
}

最后别忘了一个细节:在启动类加上Mapper扫描注解

package org.dreamtech.springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
@MapperScan("org.dreamtech.springboot.mapper")
public class SpringbootApplication { public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
} }

启动后访问localhost:8080/user/add

测试成功!

继续完成增删改查

有时候,开发者希望能够在控制台打印SQL语句,需要加一行配置文件

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

CRUD完整实现:

package org.dreamtech.springboot.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 org.dreamtech.springboot.domain.User; public interface UserMapper {
/**
* 插入对象
*
* @param user 对象
* @return int
*/
@Insert("INSERT INTO user(name,phone,create_time,age) VALUES(#{name},#{phone},#{createTime},#{age})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int insert(User user); /**
* 查找全部
*
* @return
*/
@Select("SELECT * FROM user")
@Results({ @Result(column = "create_time", property = "createTime", javaType = java.util.Date.class) })
List<User> getAll(); /**
* 根据ID找对象
*
* @param id ID
* @return
*/
@Select("SELECT * FROM user WHERE id=#{id}")
@Results({ @Result(column = "create_time", property = "createTime", javaType = java.util.Date.class) })
User findById(Long id); /**
* 更新对象
*
* @param user 对象
* @return
*/
@Update("UPDATE user SET name=#{name} WHERE id=#{id}")
int update(User user); /**
* 根据ID删除对象
*
* @param id ID
* @return
*/
@Delete("DELETE FROM user WHERE id=#{id}")
int delete(Long id);
}
package org.dreamtech.springboot.service;

import java.util.List;

import org.dreamtech.springboot.domain.User;

public interface UserService {
int add(User user); List<User> getAll(); User findById(Long id); int update(User user); int delete(Long id);
}
package org.dreamtech.springboot.service.impl;

import java.util.List;

import org.dreamtech.springboot.domain.User;
import org.dreamtech.springboot.mapper.UserMapper;
import org.dreamtech.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper; @Override
public int add(User user) {
userMapper.insert(user);
int id = user.getId();
return id;
} @Override
public List<User> getAll() {
return userMapper.getAll();
} @Override
public User findById(Long id) {
return userMapper.findById(id);
} @Override
public int update(User user) {
return userMapper.update(user);
} @Override
public int delete(Long id) {
return userMapper.delete(id);
} }
package org.dreamtech.springboot.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.dreamtech.springboot.domain.User;
import org.dreamtech.springboot.service.UserService;
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.RestController; @RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService; private Map<String, Object> modelMap = new HashMap<String, Object>(); @GetMapping("/add")
private Object add() {
User user = new User();
user.setAge(18);
user.setCreateTime(new Date());
user.setName("admin");
user.setPhone("100000");
userService.add(user);
return user;
} @GetMapping("/getall")
private Object getAll() {
modelMap.clear();
List<User> list = userService.getAll();
if (list.size() > 0) {
modelMap.put("users", list);
modelMap.put("success", true);
} else {
modelMap.put("success", false);
}
return modelMap;
} @GetMapping("/findbyid")
private Object findById(Long id) {
if (id == null || id < 0) {
modelMap.put("success", false);
}
modelMap.clear();
User user = userService.findById(id);
if (user != null) {
modelMap.put("success", true);
modelMap.put("user", user);
} else {
modelMap.put("success", false);
}
return modelMap;
} @GetMapping("/update")
private Object update() {
modelMap.clear();
User user = new User();
user.setId(1);
user.setName("newAmdin");
int effectedNum = userService.update(user);
if (effectedNum > 0) {
modelMap.put("success", true);
} else {
modelMap.put("success", false);
}
return modelMap;
} @GetMapping("/delete")
private Object delete(Long id) {
if (id == null || id < 0) {
modelMap.put("success", false);
}
modelMap.clear();
int effectedNum = userService.delete(id);
if (effectedNum > 0) {
modelMap.put("success", true);
} else {
modelMap.put("success", false);
}
return modelMap;
}
}

事务:

如果用到事务相关的内容,需要在Service层加入一个注解@Transactional

    @Transactional(propagation = Propagation.REQUIRED)

最新文章

  1. 一个UILabel不同部分显示不同颜色
  2. freemarker 数字格式化函数
  3. linux下进度条的编写和实现
  4. get新技能: 如何设置元素高度与宽度成特定比例。宽度改变,高度自动按比例改变。 例如设置宽高比16:9。
  5. Light OJ 1296 - Again Stone Game (博弈sg函数递推)
  6. C++primer 阅读点滴记录(三)
  7. 拓扑排序 HDU1285
  8. Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1) 错误 解决方案(android-ndk)
  9. poj 2773 利用欧拉函数求互质数
  10. Android 利用摄像头指尖测试心率
  11. [非官方]ArcGIS10.2 for Desktop扩展工具包——XTools Pro
  12. Mysql数据库学习笔记之数据库索引(index)
  13. Thread(线程)四
  14. 团队作业9——测试与发布(Beta版本)(含展示博客)
  15. Identity4实现服务端+api资源控制+客户端请求
  16. 2018 CCPC 网络赛 Buy and Resell
  17. Python字符串格式化--format()方法
  18. go语言常见问题总结
  19. sys模块(二十一)
  20. json库的编译方法和vs2010中导入第三方库的方法

热门文章

  1. H3C-端口镜像
  2. nginx开发_ngx_palloc源码解析
  3. 12306.cn网站自动登录器源代码
  4. SKINTOOL 系统不能正常运行
  5. CSS:CSS cursor 属性
  6. PHP正则匹配中文汉字注意
  7. ununtu 下安装 Nvidia 显卡驱动
  8. 超级简单的跨平台高性能音视频播放框架QtAv编译指南
  9. 关于git被误删除的分支还原问题
  10. 调试 Hadoop 源代码