mapper-spring-boot-starter 應用研究

置頂:Mybatis通用Mapper3筷凤,一個權(quán)威的文檔https://mapperhelper.github.io/docs/
————————————

18.1.26
繼承了Mapper<T>昭殉。
其中save和insertOrUpdate方法,會忽略mysql中設置的默認值藐守。
使用insertSelective方法挪丢,就不會忽略默認值。
//插入一條數(shù)據(jù),只插入不為null的字段,不會影響有默認值的字段
//支持Oracle序列,UUID,類似Mysql的INDENTITY自動增長(自動回寫)
//優(yōu)先使用傳入的參數(shù)值,參數(shù)值空時,才會使用序列卢厂、UUID,自動增長
int insertSelective(T record);
參考:http://blog.csdn.net/isea533/article/details/41457529乾蓬。
————————————
注意:在SpringBoot中使用通用Mapper。
Spring-boot啟動類慎恒,@MapperScan僅掃描業(yè)務接口包任内,不能掃描本地通用Mapper接口包,否則報java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class異常融柬。
17.12.27
下面26日寫的只是寫代碼流程的簡介死嗦。
這里寫一些具體的注意事項,當然也都是從別人的博客摘抄的粒氧。

泛型(實體類)<T>的類型必須符合要求
實體類按照如下規(guī)則和數(shù)據(jù)庫表進行轉(zhuǎn)換,注解全部是JPA中的注解:

  1. 表名默認使用類名,駝峰轉(zhuǎn)下劃線(只對大寫字母進行處理),如UserInfo默認對應的表名為user_info越除。
  2. 表名可以使用@Table(name = “tableName”)進行指定,對不符合第一條默認規(guī)則的可以通過這種方式指定表名.
  3. 字段默認和@Column一樣,都會作為表字段,表字段默認為Java對象的Field名字駝峰轉(zhuǎn)下劃線形式.
  4. 可以使用@Column(name = “fieldName”)指定不符合第3條規(guī)則的字段名
  5. 使用@Transient注解可以忽略字段,添加該注解的字段不會作為表字段使用.
  6. 建議一定是有一個@Id注解作為主鍵的字段,可以有多個@Id注解的字段作為聯(lián)合主鍵.
    7.默認情況下,實體類中如果不存在包含@Id注解的字段,所有的字段都會作為主鍵字段進行使用(這種效率極低).
    8.實體類可以繼承使用,可以參考測試代碼中的com.github.abel533.model.UserLogin2類.
    9.由于基本類型,如int作為實體類字段時會有默認值0,而且無法消除,所以實體類中建議不要使用基本類型。
    除了上面提到的這些,Mapper還提供了序列(支持Oracle)外盯、UUID(任意數(shù)據(jù)庫,字段長度32)摘盆、主鍵自增(類似Mysql,Hsqldb)三種方式,其中序列和UUID可以配置多個饱苟,主鍵自增只能配置一個孩擂。
    參考文章:http://blog.csdn.net/xfz0330/article/details/52275192

————————————
17.12.26
新項目打算使用通用mapper,針對mybatis掷空,原來寫xml的方式面對眾多文件和sql總是感覺亂糟糟的肋殴。使用通用mapper就可以省去很多寫mapper和sql的時間,即不需要寫Mapper.xml坦弟。
1护锤、引入mapper-spring-boot-starter
去maven repository里面找適合的版本。
2酿傍、mapper也就是dao烙懦,需要一個具體dao接口繼承Mapper<T>。泛型就是對應的domain赤炒。必須指定泛型實體<T>
這種寫法完全不需要dao接口的實現(xiàn)類氯析。
@Repository
public interface UserDao extends Mapper<User>{
public User selectUserByUserName(User user) throws Exception;
}
3亏较、對于domain,與數(shù)據(jù)庫表對應的注解一個不能少掩缓。
在類上面加@Table(name = "authority_user")雪情。指定對應表明。
在屬性上面加@Column(name = "name")你辣。指定對應的字段名巡通。
在主鍵id上面加
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
如果存在數(shù)據(jù)庫表中不存在的屬性,需要用@Transient注解舍哄,否則會報錯與數(shù)據(jù)表不對應之類的問題吧宴凉。
@Table(name = "authority_user")
public class User implements Serializable{
private static final long serialVersionUID = 1L;
/** 用戶id /
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/
用戶名稱 /
@Column(name = "name")
private String name;
/
用戶密碼 **/
@Column(name = "password")
private Integer password;
--省略set/get方法--
}
4、在啟動類上面需要加掃描注解
@MapperScan(basePackages = { "com.example.test.dao" }) //掃描mapper
如果不加就是報錯表悬,找不到dao對應的bean
5弥锄、寫測試
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootMyBatisApplicationTests {

@Autowired
private UserDao mapper;

// 插入一條新記錄
@Test
public void insertOne() {
    User newUser = new User();
    
    newUser.setName("測試用戶特朗普");
    newUser.setPassword(123);
    mapper.insertSelective(newUser);
    System.out.println("插入成功");
}

}
以上運行一下應該沒問題。不過我寫的也是過于簡略了蟆沫。
————————
補充籽暇。
接口可以多繼承》古樱可以寫一個更高級的mapper接口图仓。
public interface TkMapper<T> extends Mapper<T>, MySqlMapper<T> {

}
其中
Mapper接口:基本的增、刪但绕、改救崔、查方法
MySqlMapper:針對MySQL的額外補充接口,支持批量插入

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捏顺,一起剝皮案震驚了整個濱河市六孵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幅骄,老刑警劉巖劫窒,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拆座,居然都是意外死亡主巍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門挪凑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孕索,“玉大人,你說我怎么就攤上這事躏碳「阈瘢” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肄渗。 經(jīng)常有香客問我镇眷,道長,這世上最難降的妖魔是什么翎嫡? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任欠动,我火速辦了婚禮,結(jié)果婚禮上惑申,老公的妹妹穿的比我還像新娘翁垂。我一直安慰自己,他們只是感情好硝桩,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枚荣,像睡著了一般碗脊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上橄妆,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天衙伶,我揣著相機與錄音,去河邊找鬼害碾。 笑死矢劲,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慌随。 我是一名探鬼主播芬沉,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阁猜!你這毒婦竟也來了丸逸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剃袍,失蹤者是張志新(化名)和其女友劉穎黄刚,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體民效,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡憔维,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了畏邢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片业扒。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖舒萎,靈堂內(nèi)的尸體忽然破棺而出凶赁,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布虱肄,位于F島的核電站致板,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咏窿。R本人自食惡果不足惜斟或,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望集嵌。 院中可真熱鬧萝挤,春花似錦、人聲如沸根欧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凤粗。三九已至酥泛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫌拣,已是汗流浹背柔袁。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留异逐,地道東北人捶索。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像灰瞻,于是被迫代替她去往敵國和親腥例。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354