1、初始化项目
使用的Maven依赖有:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
使用MyBatis官方提供的 mybatis-spring-boot-starter,MyBatis的自动配置如图:
2、application.properties 的配置项
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/sosweet?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
mybatis.mapperLocations=classpath:mapper/**/*.xml
mybatis.typeAliasesPackage=com.sosweet.entity
3、注册MapperScannerConfigurer的Bean
/**
* MyBatis扫描接口
*
*/
@Configuration
//TODO 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
//@AutoConfigureAfter(MyBatisConfig.class)
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
mapperScannerConfigurer.setBasePackage("com.sosweet.mapper");
return mapperScannerConfigurer;
}
}
4、配置数据源 (使用druid)
4.1 添加druid的maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
4.2 application.properties数据源的配置项
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.filters=stat
spring.datasource.maxActive=20
spring.datasource.initialSize=1
spring.datasource.maxWait=60000
spring.datasource.minIdle=1
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=select 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxOpenPreparedStatements=20
5、编写:User.java 实体类
public class User implements Serializable {
/** serialVersionUID. */
private static final long serialVersionUID = 1L;
/** 主键. */
private String id;
/** 用户名. */
private String userName = "";
/** 手机号码. */
private String mobileNo = "";
/** 邮箱. */
private String email = "";
/** 密码. */
private String password = "";
/** 用户类型. */
private Integer userType = 0;
/** 注册时间. */
private Date registerTime = new Date();
/** 所在区域. */
private String region = "";
/** 是否有效 0 有效 1 无效. */
private Integer validity = 0;
/** 头像. */
private String headPortrait = "";
6、编写:UserMapper.java 接口
public interface UserMapper {
void save(User user);
}
7、编写:UserService.java
@Service
@Transactional
public class UserService {
@Autowired
private UserMapper userMapper;
/**
* 保存
*
* @param user
* @return
*/
public Boolean saveUser(User user){
userMapper.save(user);
return true;
}
}
8、编写:UserController.java
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("saveUser")
public String saveUser(){
User user = new User();
user.setId("111111476-1");
user.setUserName("tom");
user.setMobileNo("15864710523");
user.setEmail("2222@qq.com");
user.setPassword("123");
user.setUserType(0);
user.setRegisterTime(new Date());
user.setRegion("3701");
user.setValidity(0);
user.setHeadPortrait("///");
userService.saveUser(user);
return "ok";
}
}
9、编写:UserMapper.xml
UserMapper.xml放在resources目录下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sosweet.mapper.UserMapper">
<insert id="save">
insert into user(id,
user_name,
mobile_no,
email,
password,
user_type,
register_time,
region,
validity,
head_portrait)
values(#{id},
#{userName},
#{mobileNo},
#{email},
#{password},
#{userType},
#{registerTime},
#{region},
#{validity},
#{headPortrait})
</insert>
</mapper>
至此,完整的项目结构:
运行并测试: