springboot+mybatis集成+分頁插件使用

今天學習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的依賴,否則分頁不生效

效果:

小夥伴們還是自己親自動手搭建環境,以及寫代碼,調試,最終將數據跑通,還是很有收穫的

在代碼的路上繼續走下去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章