springboot 中使用 Mybatis 注解 配置 详解
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。
傳參方式
使用不同的傳參方式:
使用@Param
之前博文中的項(xiàng)目使用了這種簡(jiǎn)單的傳參方式:
理解: @Param中定義了name對(duì)應(yīng)了sql中的#{name}, password 對(duì)應(yīng)了sql中的#{password}, phone 對(duì)應(yīng)了sql中的 #{phone}。
使用Map
通過Map對(duì)象來傳遞參數(shù):? ?
對(duì)于Insert語句中需要的參數(shù),我們只需要在map中填入同名的內(nèi)容即可,具體如下面代碼所示:
Map<String, Object> map = new HashMap<>();map.put("name","王五");map.put("password","23423");map.put("phone", "13400000000");userMapper.insertByMap(map);使用對(duì)象
如果我們使用普通的java對(duì)象作為查詢條件的參數(shù):
只需要語句中的#{name}、#{age}就分別對(duì)應(yīng)了User對(duì)象中的name和age屬性。
? ? User u = new User();u.setName("趙六");u.setPassword("12312312");u.setPhone("13888888888");userMapper.insertByUser(u);增刪改查
MyBatis針對(duì)不同的數(shù)據(jù)庫操作分別提供了不同的注解來進(jìn)行配置,在之前的示例中演示了@Insert,下面針對(duì)User表做一組最基本的增刪改查作為示例:? ?
進(jìn)行測(cè)試:
package com.winterchen;import com.winterchen.domain.User; import com.winterchen.mapper.UserMapper; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional;import java.util.HashMap; import java.util.Map;@RunWith(SpringRunner.class) @SpringBootTest public class SpringbootMybatisDemo2ApplicationTests {@Autowiredprivate UserMapper userMapper;@Test@Transactionalpublic void test3(){userMapper.insert("張三", "123456", "18600000000");User u = userMapper.findUserByPhone("18600000000");Assert.assertEquals("123456", u.getPassword());u.setName("趙六");u.setPassword("12312312");userMapper.update(u);u = userMapper.findUserByPhone("18600000000");Assert.assertEquals("12312312", u.getPassword());userMapper.delete(u.getId());u = userMapper.findUserByPhone("18600000000");Assert.assertEquals(null, u);} }注意:當(dāng)使用@Transactional進(jìn)行了事務(wù)管理,在單元測(cè)試結(jié)束之后會(huì)自動(dòng)回滾,所以,測(cè)試跑完之后數(shù)據(jù)庫中沒有數(shù)據(jù)。所以只要測(cè)試通過了就沒有問題了。
返回結(jié)果綁定
對(duì)于增、刪、改操作相對(duì)變化較小。而對(duì)于“查”操作,我們往往需要進(jìn)行多表關(guān)聯(lián),匯總計(jì)算等操作,那么對(duì)于查詢的結(jié)果往往就不再是簡(jiǎn)單的實(shí)體對(duì)象了,往往需要返回一個(gè)與數(shù)據(jù)庫實(shí)體不同的包裝類,那么對(duì)于這類情況,就可以通過@Results和@Result注解來進(jìn)行綁定,具體如下:
在上面代碼中,@Result中的property屬性對(duì)應(yīng)User對(duì)象中的成員名,column對(duì)應(yīng)SELECT出的字段名。在該配置中故意沒有查出id屬性,只對(duì)User對(duì)應(yīng)中的name,password,phone對(duì)象做了映射配置,這樣可以通過下面的單元測(cè)試來驗(yàn)證查出的id為null,而其他屬性不為null:
@Test@Transactionalpublic void test4(){userMapper.insert("張三", "123456", "18600000000");userMapper.insert("李四", "123456", "13500000000");List<User> list = userMapper.findAll();Assert.assertEquals(2, list.size());}
---------------------?
轉(zhuǎn)自:https://blog.csdn.net/winter_chen001/article/details/78623700?
?
總結(jié)
以上是生活随笔為你收集整理的springboot 中使用 Mybatis 注解 配置 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#中消息机制阻塞实例与结论
- 下一篇: Docker 方式安装 Nginx 、阿