文章列表
本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。 具体文章系列如下: 一.SpringBoot集成实例系列-xml型单数据源mybatis 二.SpringBoot集成实例系列-xml型多数据源mybatis 三.SpringBoot集成实例系列-注解型单数据源mybatis 四.SpringBoot集成实例系列-注解型多数据源mybatis 五.SpringBoot集成实例系列-邮件email 六.SpringBoot集成实例系列-单数据源mongodb 七.SpringBoot集成实例系列-多数据源mongodb 八.SpringBoot集成实例系列-缓存redis 九.SpringBoot集成实例系列-数据库cassandra 十.SpringBoot集成实例系列-定时任务scheduler 十一.SpringBoot集成实例系列-消息队列kafka 十二.SpringBoot集成实例系列-消息推送websocket
上两篇文章,小求分别集成mybatis-xml型单数据源和多数据源。本章将通过实例集成mybatis注解型单数据源。
1.实例需求
用户信息(用户名、别名、密码、性别、邮箱、创建时间),实现简单增删改查
2.技术要点
2.1 mybatis的xml型和注解型异同
同:都是调用mapper接口来关联数据库; 异:xml型-mapper.xml文件通过mapper的namespace属性关联mapper接口,相应的sql脚本直接在mapper.xml文件实现。
注解型-通过mapper接口对应的方法通过mybatis注解来关联和管理sql脚本。
更多信息:http://www.yiibai.com/mybatis/interface_comment.html
2.2 springboot单数据源配置
spring.datasource.driverClassName:数据源驱动类 spring.datasource.url:数据源url spring.datasource.username:用户名 spring.datasource.password:密码
#mybatis.type-aliases-package=com.neo.entity
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.3 springboot与mybatis集成设置
@MapperScan("com.lm.mapper") 使用@MapperScan来扫描注册mybatis数据库接口类
3. 代码实现
3.1 项目目录结构
3.2 mapper接口
package com.lm.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
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 com.lm.entity.UserEntity;
import com.lm.enums.SexEnums;
/**
* mybatis中mapper接口
* @author liangming.deng
* @date 2017年6月21日
*
*/
public interface UserMapper {
@Select("select * from user")
@Results({
@Result(id=true,property="id",column="id"),
@Result(property="userName",column="userName"),
@Result(property="nickName",column="nickName"),
@Result(property="passWord",column="passWord"),
@Result(property="email",column="email"),
@Result(property="regTime",column="regTime"),
@Result(property="sexEnums",column="sex",javaType=SexEnums.class)})
List<UserEntity> getAll();
@Select("select * from user where id=#{id}")
@Results({
@Result(id=true,property="id",column="id"),
@Result(property="userName",column="userName"),
@Result(property="nickName",column="nickName"),
@Result(property="passWord",column="passWord"),
@Result(property="email",column="email"),
@Result(property="regTime",column="regTime"),
@Result(property="sexEnums",column="sex",javaType=SexEnums.class)})
UserEntity getUserById(Long id);
@Insert("INSERT INTO user(userName,nickName,passWord,email,regTime,sex) "
+ "VALUES(#{userName}, #{nickName}, #{passWord}, #{email}, #{regTime}, #{sex}) ")
void insert(UserEntity user);
@Update("UPDATE user SET userName=#{userName},nickName=#{nickName} where id=#{id}")
void update(UserEntity user);
@Delete("DELETE FROM user where id=#{id}")
void delete(Long id);
}
整个mybatis注解型的实现,主要工作任务是集中在mapper接口。
3.3 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);
}
}
3.6 运行效果
4. 代码地址
Github: https://github.com/a123demi/spring-boot-integration