文章列表
本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。
具体文章系列如下:
六.SpringBoot集成实例系列-单数据源mongodb
七.SpringBoot集成实例系列-多数据源mongodb
八.SpringBoot集成实例系列-缓存redis
九.SpringBoot集成实例系列-数据库cassandra
十.SpringBoot集成实例系列-定时任务scheduler
十一.SpringBoot集成实例系列-消息队列kafka
十二.SpringBoot集成实例系列-消息推送websocket
本文阅读之前,小求认为您已经有一定的Spring、Mybatis和数据库基础。本文将从实例的角度来实现实现xml型单数据源mybatis。
1.实例需求
用户信息(用户名、别名、密码、性别、邮箱、创建时间),实现简单增删改查
见表语句:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nickname` varchar(20) DEFAULT NULL COMMENT '用户昵称',
`username` varchar(255) NOT NULL,
`email` varchar(128) DEFAULT NULL COMMENT '邮箱|登录帐号',
`passWord` varchar(32) DEFAULT NULL COMMENT '密码',
`regTime` datetime DEFAULT NULL COMMENT '创建时间',
`sex` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;
2.技术要点
2.1 mybatis类型别名配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
2.2 springboot集成mybatis的配置
配置文件详情见小求博文:Springboot集成配置文件大全
mybatis.config-locations:mybatis配置文件放置路径
mybatis.mapper-locations:mybatis对应mapper脚本映射路径
mybatis.type-aliases-package:mybatis对应实体包路径
###################mybatis配置########################################
mybatis.config-locations=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.type-aliases-package=com.lm.entity
2.3 springboot单数据源配置
spring.datasource.driverClassName:数据源驱动类
spring.datasource.url:数据源url
spring.datasource.username:用户名
spring.datasource.password:密码
###################mysql数据源配置###############################################
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://192.168.32.128:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root
2.4 springboot与mybatis集成设置
@MapperScan("com.lm.mapper")
SpringBoot启动时使用@MapperScan注解来扫描注入mybatis数据库接口类
3. 代码实现
3.1 项目目录结构
3.2 实体类UserEntity
package com.lm.entity;
import java.util.Date;
import com.lm.enums.SexEnums;
/**
* 用户信息
* @author liangming.deng
* @date 2017年6月20日
*
*/
public class UserEntity {
/**
* 逐渐
*/
private Long id;
/**
* 用户名
*/
private String userName;
/**
* 昵称
*/
private String nickName;
/**
* 密码
*/
private String passWord;
/**
* 注册时间
*/
private Date regTime;
/**
* 邮箱
*/
private String email;
/**
* 性别
*/
private SexEnums sexEnums;
public UserEntity(){}
public UserEntity(String userName, String nickName, String passWord, Date regTime, String email,
SexEnums sexEnums) {
super();
this.userName = userName;
this.nickName = nickName;
this.passWord = passWord;
this.regTime = regTime;
this.email = email;
this.sexEnums = sexEnums;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public Date getRegTime() {
return regTime;
}
public void setRegTime(Date regTime) {
this.regTime = regTime;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public SexEnums getSexEnums() {
return sexEnums;
}
public void setSexEnums(SexEnums sexEnums) {
this.sexEnums = sexEnums;
}
}
3.3 mapper接口
package com.lm.mapper;
import java.util.List;
import com.lm.entity.UserEntity;
/**
* mybatis中mapper接口
* @author liangming.deng
* @date 2017年6月21日
*
*/
public interface UserMapper {
List<UserEntity> getAll();
UserEntity getUserById(Long id);
void insert(UserEntity user);
void update(UserEntity user);
void delete(Long id);
}
3.4 控制器Controller
@RestController:相当于@ResponseBody + @Controller合在一起的作用。
package com.lm.web;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.lm.entity.UserEntity;
import com.lm.mapper.UserMapper;
/**
* 前端控制器
* @author liangming.deng
* @date 2017年6月21日
*
*/
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/getUsers")
public List<UserEntity> getUsers() {
List<UserEntity> users = userMapper.getAll();
return users;
}
@RequestMapping("/getUser")
public UserEntity getUser(Long id) {
UserEntity user = userMapper.getUserById(id);
return user;
}
@RequestMapping("/add")
public void save(UserEntity user) {
userMapper.insert(user);
}
@RequestMapping(value = "update")
public void update(UserEntity user) {
userMapper.update(user);
}
@RequestMapping(value = "/delete/{id}")
public void delete(@PathVariable("id") Long id) {
userMapper.delete(id);
}
}
3.5 springboot启动器
package com.lm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 应用启动
*
* @author liangming.deng
* @date 2017年6月20日
*
*/
@SpringBootApplication
@MapperScan("com.lm.mapper")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}