今天学习springboot集成mybatis,自己创建一个springboot项目,这个网上教程很多,可以自行参考,我这里就按照pom文件开始,一步一步说明下自己整个集成过程
1、pom文件修改,只是列出了添加依赖
<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>
<!--数据库连接jdbc-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis配置-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--分页插件配置-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<!--添加下边两个依赖,否则分页插件不生效-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
修改完项目pom之后,所有用到的jar包就已经准备好了,这个时候你需要搭建项目目录结构,我自己的项目目录结构如图,由于是简单举例,就只是写了一个简单用户查询分页
2、项目结构图(本人用idea开发)
3、配置文件信息修改(application.properties)
#启动端口号
server.port=9999
#mysql配置
spring.datasource.url=jdbc:mysql://ip:port/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybatis配置
mybatis.package=com.example.springboot.mybatislearn.dao
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.springboot.mybatislearn.domain
4、启动类添加注解@MapperScan,让其能够扫描dao层
@SpringBootApplication
@MapperScan("com.example.springboot.mybatislearn.dao")
public class MybatislearnApplication {
public static void main(String[] args) {
SpringApplication.run(MybatislearnApplication.class, args);
}
}
5、用户实体类,根据数据库字段,然后对应创建实体类属性
public class User {
private Integer userId;
/**
* 用户名称
*/
private String userName;
/**
* 密码(MD5加密)
*/
private String password;
/**
* 说明
*/
private String remark;
/**
* 最后登录时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastLoginTime;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 修改时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
* 用户类型1:管理员 2:普通用户
*/
private Integer userType;
/**
* 用户:0 本地 1 uap
*/
private Integer uapEnable;
/**
* uap 用户id
*/
private String uapOrgid;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
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 String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Date getLastLoginTime() {
return lastLoginTime;
}
public void setLastLoginTime(Date lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getUserType() {
return userType;
}
public void setUserType(Integer userType) {
this.userType = userType;
}
public Integer getUapEnable() {
return uapEnable;
}
public void setUapEnable(Integer uapEnable) {
this.uapEnable = uapEnable;
}
public String getUapOrgid() {
return uapOrgid;
}
public void setUapOrgid(String uapOrgid) {
this.uapOrgid = uapOrgid;
}
}
6、dao层,数据库操作,别忘记注解@Mapper
@Mapper
public interface UserDao {
List<User> selectAllUser();
}
7、mybatis xml,名称为dao层接口类,UserDao.xml
<?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.example.springboot.mybatislearn.dao.UserDao">
<resultMap id="BaseUserResultMap" type="com.example.springboot.mybatislearn.domain.User" >
<id column="user_id" jdbcType="INTEGER" property="userId"/>
<result column="user_name" jdbcType="VARCHAR" property="userName"/>
<result column="password" jdbcType="VARCHAR" property="password"/>
<result column="remark" jdbcType="VARCHAR" property="remark"/>
<result column="last_login_time" jdbcType="TIMESTAMP" property="lastLoginTime"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="user_type" jdbcType="BIT" property="userType"/>
<result column="uap_enable" jdbcType="BIT" property="uapEnable"/>
<result column="uap_orgid" jdbcType="VARCHAR" property="uapOrgid"/>
</resultMap>
<sql id="Base_Column_List">
user_id, user_name, password, remark, last_login_time, create_time, update_time,
user_type, uap_enable, uap_orgid
</sql>
<select id="selectAllUser" resultMap="BaseUserResultMap">
select
<include refid="Base_Column_List" />
from admin_user
</select>
</mapper>
8、service代码,以及实现类代码
接口层
public interface UserService {
PageInfo<User> getUserByPage(int pageNum, int pageSize);
}
实现类,实现类这块我想掰扯掰扯,别忘了注解,然后引入dao,PageHelp.startPage方法后紧跟的第一查询sql操作语句会被分页(这个是重点),
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public PageInfo<User> getUserByPage(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize, true);
List<User> users = userDao.selectAllUser();
PageInfo<User> userPageInfo = new PageInfo<>(users);
return userPageInfo;
}
}
9、UserController类实现代码
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/get/page/user", method = RequestMethod.GET)
public Object getUser(int pageSize, int pageNum) {
return userService.getUserByPage(pageNum, pageSize);
}
}
其实分页不是很难,就是有很多坑要踩,比如pom文件中需要引入三个关于PageHelp的依赖,否则分页不生效
效果:
小伙伴们还是自己亲自动手搭建环境,以及写代码,调试,最终将数据跑通,还是很有收获的
在代码的路上继续走下去