今天學習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的依賴,否則分頁不生效
效果:
小夥伴們還是自己親自動手搭建環境,以及寫代碼,調試,最終將數據跑通,還是很有收穫的
在代碼的路上繼續走下去