SpringBoot 配置 MyBatis


MyBatis

新建工程,選好資源


實體類

不需要添加各種注解犁跪,直接把對應(yīng)字段生成get與set方法即可

package com.bruce.SpringBootMVC04Mybatis.entity;

import java.io.Serializable;

public class Account implements Serializable {

private static final long serialVersionUID = -8149090919935604147L;

private Integer id;

private String loginName;

private String password;

private String nickName;

private Integer age;

private String location;

private String role;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getLoginName() {

return loginName;

}

public void setLoginName(String loginName) {

this.loginName = loginName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getNickName() {

return nickName;

}

public void setNickName(String nickName) {

this.nickName = nickName;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public String getLocation() {

return location;

}

public void setLocation(String location) {

this.location = location;

}

public String getRole() {

return role;

}

public void setRole(String role) {

this.role = role;

}

public Account() {

super();

}

}

Dao層接口定義

在接口上要加上@Mapper注解

package com.bruce.SpringBootMVC04Mybatis.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.bruce.SpringBootMVC04Mybatis.entity.Account;

@Mapper

public interface AccountMapper {

List<Account> findAll();

}

注:如果這里不想每個接口都加注解的話,可以在SpringBoot啟動類上面加上注解@MapperScan("com.bruce.SpringBootMVC04Mybatis.mapper"),括號中對應(yīng)Dao層的路徑,這樣每個Dao接口上面就不用加@Mapper注解了

Service層實現(xiàn)定義

在類名上加上@Service注解劫恒,在注入的Dao接口對象上加上@Autowired注解

package com.bruce.SpringBootMVC04Mybatis.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import com.bruce.SpringBootMVC04Mybatis.entity.Account;

import com.bruce.SpringBootMVC04Mybatis.mapper.AccountMapper;

@Service

public class AccountService {

@Autowired

AccountMapper accountMapper;

public List<Account> findAll() {

return accountMapper.findAll();

}

}

Controller層定義

在Controller類上加上@RestController注解,在注入的Service對象加上注解@Autowired
對應(yīng)的Controller方法上加上@RequestMapping注解來配置請求路徑

package com.bruce.SpringBootMVC04Mybatis.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;

import com.bruce.SpringBootMVC04Mybatis.entity.Account;

import com.bruce.SpringBootMVC04Mybatis.service.AccountService;

@RestController

@RequestMapping("/account")

public class AccountController {

@Autowired

AccountService accountService;

@RequestMapping("/list")

@ResponseBody

public Object list() {

List<Account> accounts = accountService.findAll();

return accounts;

}

}

配置MyBatis的xml配置文件

配置文件中mapper節(jié)點的namespace屬性對應(yīng)Dao層接口路徑轿腺,resultMap節(jié)點的type屬性對應(yīng)實體類對象路徑

<?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.bruce.SpringBootMVC04Mybatis.mapper.AccountMapper">

<resultMap id="BaseResultMap"

type="com.bruce.SpringBootMVC04Mybatis.entity.Account">

<id column="id" jdbcType="INTEGER" property="id" />

<result column="login_name" jdbcType="VARCHAR"

property="loginName" />

<result column="password" jdbcType="VARCHAR"

property="password" />

<result column="nick_name" jdbcType="VARCHAR"

property="nickName" />

<result column="age" jdbcType="INTEGER" property="age" />

<result column="location" jdbcType="VARCHAR"

property="location" />

<result column="role" jdbcType="VARCHAR" property="role" />

</resultMap>

<select id="findAll" resultMap="BaseResultMap">

select * from account

</select>

</mapper>

在application.properties文件中進行相關(guān)配置

spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false&serverTimezone=UTC

spring.datasource.username=root

spring.datasource.password=root

server.servlet.context-path = /SpringBoot

mybatis.type-aliases-package=com.bruce.SpringBootMVC04Mybatis.mapper (對應(yīng)dao層接口的路徑)

mybatis.mapper-locations=classpath:mybatis/mapper/*.xml (對應(yīng)MyBatis的xml配置文件的路徑)


一些基礎(chǔ)代碼两嘴,可以通過代碼生成器來完成,這樣基礎(chǔ)的代碼就不用自己再去手動寫了

mybatis-generator-gui 使用說明與下載地址:https://github.com/zouzg/mybatis-generator-gui

生成的代碼中Dao層的基類MyBatisBaseDao包含了所有的基本方法

/**

* DAO公共基類族壳,由MybatisGenerator自動生成請勿修改

* @param <Model> The Model Class 這里是泛型不是Model類

* @param <PK> The Primary Key Class 如果是無主鍵憔辫,則可以用Model來跳過,如果是多主鍵則是Key類

* @param <E> The Example Class

*/

public interface MyBatisBaseDao<Model, PK extends Serializable, E> {

? ? long countByExample(E example);

? ? int deleteByExample(E example);

? ? int deleteByPrimaryKey(PK id);

? ? int insert(Model record);

? ? int insertSelective(Model record);

? ? List<Model> selectByExample(E example);

? ? Model selectByPrimaryKey(PK id);

? ? int updateByExampleSelective(@Param("record") Model record, @Param("example") E example);

? ? int updateByExample(@Param("record") Model record, @Param("example") E example);

? ? int updateByPrimaryKeySelective(Model record);

? ? int updateByPrimaryKey(Model record);

}


每個實體類對應(yīng)Dao層的mapper都有一個對應(yīng)的實體類的Example仿荆,Service層可以調(diào)用mapper的基本增刪改查方法螺垢,當需要查詢列表數(shù)據(jù)的時候,可以調(diào)用selectByExample方法

@Service

public class MenuService {

@Autowired

MenuMapper menuMapper;

public List<Menu> findAll(String name) {

MenuExample menuExample = new MenuExample();

menuExample.createCriteria().andNameEqualTo(name);

return menuMapper.selectByExample(menuExample);

}

public Menu findById(Integer id) {

return menuMapper.selectByPrimaryKey(id);

}

}

通過pagehelper進行分頁操作

pagehelper 使用說明文檔 https://github.com/pagehelper/pagehelper-spring-boot

如果你使用 Maven赖歌,你只需要在 pom.xml 中添加下面的依賴:

<!--分頁插件 https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper-spring-boot-starter</artifactId>

<version>1.2.13</version>

</dependency>

需要加入分頁的方法,可以如下進行修改

@Service

public class MenuService {

@Autowired

MenuMapper menuMapper;

public List<Menu> findAll(String name) {

MenuExample menuExample = new MenuExample();

menuExample.createCriteria().andNameEqualTo(name);

return menuMapper.selectByExample(menuExample);

}

public Menu findById(Integer id) {

return menuMapper.selectByPrimaryKey(id);

}

public List<Menu> findByPage(Integer pageNum, Integer pageSize) {

???? PageHelper.startPage(pageNum, pageSize);

???? MenuExample menuExample=new MenuExample();

???? return menuMapper.selectByExample(menuExample);

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末功茴,一起剝皮案震驚了整個濱河市庐冯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坎穿,老刑警劉巖展父,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件返劲,死亡現(xiàn)場離奇詭異,居然都是意外死亡栖茉,警方通過查閱死者的電腦和手機篮绿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吕漂,“玉大人亲配,你說我怎么就攤上這事』棠” “怎么了吼虎?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長苍鲜。 經(jīng)常有香客問我思灰,道長,這世上最難降的妖魔是什么混滔? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任洒疚,我火速辦了婚禮,結(jié)果婚禮上坯屿,老公的妹妹穿的比我還像新娘油湖。我一直安慰自己,他們只是感情好愿伴,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布肺魁。 她就那樣靜靜地躺著,像睡著了一般隔节。 火紅的嫁衣襯著肌膚如雪鹅经。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天怎诫,我揣著相機與錄音瘾晃,去河邊找鬼。 笑死幻妓,一個胖子當著我的面吹牛蹦误,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肉津,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼强胰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妹沙?” 一聲冷哼從身側(cè)響起偶洋,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎距糖,沒想到半個月后玄窝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牵寺,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年恩脂,在試婚紗的時候發(fā)現(xiàn)自己被綠了帽氓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俩块,死狀恐怖黎休,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情典阵,我是刑警寧澤奋渔,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站壮啊,受9級特大地震影響嫉鲸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歹啼,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一玄渗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狸眼,春花似錦藤树、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至微王,卻和暖如春屡限,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炕倘。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工钧大, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罩旋。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓啊央,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涨醋。 傳聞我的和親對象是個殘疾皇子瓜饥,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容