国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 詳解spring boot mybatis全注解化

詳解spring boot mybatis全注解化

2021-01-10 11:24給人生一個夢 Java教程

這篇文章主要介紹了spring boot mybatis全注解化的相關(guān)資料,需要的朋友可以參考下

本文重點(diǎn)給大家介紹spring boot mybatis 注解化的實(shí)例代碼,具體內(nèi)容大家參考下本文:

pom.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
<!-- 引入mybatis -->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>1.3.0</version>
</dependency>
<!-- mybatis分頁插件 -->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper-spring-boot-starter</artifactId>
  <version>1.1.1</version>
</dependency>

基本SQL操作

spring boot已經(jīng)自動實(shí)現(xiàn)了mybatis所有配置,直接寫dao接口即可

?
1
2
3
4
@Mapper
public interface MybatisDao {
  @Select("select * from user where id = #{id}")
  public List<User> findById(User param);

@Mapper:聲明一個mybatis的dao接口,會被spring boot掃描到

@Select:聲明一個查詢方法,相應(yīng)的增刪改使用@Insert @Delete@Update

List<User>:返回集合。如果只返回一個結(jié)果,返回值是User。如果是增刪改方法返回值是int

User param:傳參,#{id}就是param對象的id值

掃描Mapper

@MapperScan("hello.dao")

在配置類上添加以上注解,可以掃描dao包中的所有接口,替代在每個dao中寫@Mapper注解,不過這樣會提高耦合度。而@Mapper可以與dao自成一體,與@Controller、@Service遙相呼應(yīng),整體結(jié)構(gòu)更優(yōu)雅

駝峰命名

在properties中添加以下配置,在執(zhí)行查詢后,可以將數(shù)據(jù)庫的NN_NN格式字段,在java結(jié)果集對象中自動轉(zhuǎn)換成駝峰命名參數(shù)

?
1
mybatis.configuration.mapUnderscoreToCamelCase=true

結(jié)果映射@Results

如果結(jié)果集不是JAVA對象而是Map,map中的列名會和數(shù)據(jù)庫中的NN_NN一樣,是不會自動駝峰轉(zhuǎn)換的。可以使用@Result來指明結(jié)果映射,同樣也適用JAVA對象

?
1
2
3
4
5
@Results({
  @Result(property="nnNn",column="NN_NN")  
})
@Select("select * from user")  
public List<Map> findAll();

使用List<Map>不用去維護(hù)pojo,適于用數(shù)據(jù)庫字段不確定或經(jīng)常變化的場景。但是程序的可讀性、可維護(hù)性不如List<User>

可復(fù)用的@Results

聲明時給id賦值為user

?
1
2
3
@Results(id="user",value={
  @Result(property="nnNn",column="NN_NN")
})

在其他 方法中,重復(fù)使用id為user的結(jié)果映射

@ResultMap("user")

打印SQL日志到控制臺

在application.properties中添加以下配置

logging.level.你的包名.mybatis接口包=debug 

執(zhí)行SQL時,會在控制臺打印SQL日志

第一行:==>左邊是執(zhí)行SQL的接口及其方法,右邊是執(zhí)行語句

第二行:傳參數(shù)1,String類型

第三行:查到一行數(shù)據(jù)

分頁

首先要在pom.xml中引入文章開頭的分頁插件,分頁邏輯寫在service層。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Service
@Transactional
public class HelloServiceImpl {
  @Autowired
  MybatisDao mybatisDao;
  public void find(){ 
    //分頁插件: 查詢第1頁,每頁10行
    Page<User> page =PageHelper.startPage(1, 10); 
    mybatisDao.findAll(); 
    //數(shù)據(jù)表的總行數(shù)
    page.getTotal();
    //分頁查詢結(jié)果的總行數(shù)
    page.size();
    //第一個User對象,參考list,序號0是第一個元素,依此類推
    page.get(0);
  }

執(zhí)行原理:PageHelper.startPage會攔截下一個sql,也就是mybatisDao.findAll()的SQL。并且根據(jù)當(dāng)前數(shù)據(jù)庫的語法,把這個SQL改造成一個高性能的分頁SQL,同時還會查詢該表的總行數(shù),具體可以看SQL日志。

PageHelper.startPage和mybatisDao.findAll()最好緊跟在一起,中間不要有別的邏輯,否則可能出BUG。

Page<User> page:相當(dāng)于一個list集合,findAll()方法查詢完成后,會給page對象的相關(guān)參數(shù)賦值

回傳ID

假設(shè)數(shù)據(jù)庫表的ID主鍵是自動增長的,現(xiàn)在添加一條數(shù)據(jù),想要得到這條數(shù)據(jù)自動增長的ID,方法如下

dao層

useGeneratedKeys=true:獲取數(shù)據(jù)庫生成的主鍵

keyProperty="id":把主鍵值存入U(xiǎn)ser param對象的id屬性

?
1
2
3
@Insert("insert into user(name) values(#{name})")
@Options(useGeneratedKeys=true,keyProperty="id"
public int add(User param);

service層

?
1
2
3
4
User user = new User();
user.setName("tom");
mybatisDao.add(user);
System.out.println("回傳ID值:"+user.getId());

控制臺

存儲過程

這是一個mysql存儲過程,傳入一個id值,根據(jù)這個id查詢出name值并且做為傳出參數(shù)

?
1
2
3
4
5
6
DELIMITER $$
CREATE PROCEDURE `hello`(IN id_in VARCHAR(10),OUT name_out VARCHAR(10))
BEGIN
     SELECT NAME INTO name_out FROM USER WHERE id=id_in;
  END$$
DELIMITER ;

dao層

mode=IN:傳入?yún)?shù),就是user.id

mode=OUT:傳出參數(shù),就是user.name

StatementType.CALLABLE:說明這是一個存儲過程

?
1
2
3
@Select("call hello(#{id,mode=IN,jdbcType=VARCHAR},#{name,mode=OUT,jdbcType=VARCHAR})")
@Options(statementType= StatementType.CALLABLE )
public void call(User user);

service層

?
1
2
3
4
5
public void call(){
  User user = new User();
  user.setId("14");
  mybatisDao.call(user);
  System.out.println(user.getName());

執(zhí)行結(jié)果

詳解spring boot mybatis全注解化

總結(jié)

以上所述是小編給大家介紹的spring boot mybatis全注解化,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://blog.csdn.net/ztx114/article/details/78082294

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美视频综合 | 91精品久久久久久久久 | 91免费版在线观看 | 欧美国产视频一区 | 国产视频一二区 | 日本中文字幕视频 | www麻豆 | 亚洲精品999 | 国产亚洲精品久久久久久无几年桃 | 亚洲欧美日韩在线 | 久久精品国产精品青草 | 毛片大全 | 国产精品久久久久久av下载网址 | 一区二区观看 | 亚洲精品大片 | 久久久久久久久久久国产 | 中国一级黄色 | 久久免费黄色网址 | 五月婷婷网站 | 国产精品高潮呻吟久久 | 亚洲精品成人 | 午夜视频在线免费观看 | 日韩欧美一区二区三区 | 成人片网址 | 日韩日韩日韩日韩日韩日韩 | 色婷婷一区二区三区 | 久久久久久网站 | 国产 欧美 日产久久 | 国产日韩欧美综合 | 国产黄免费在线观看 | 黄色国产一级片 | 九色 在线| 欧美成人一区二区 | 日韩中文字幕视频 | 美国特级a毛片免费网站 | 在线观看一区 | 热久久这里只有精品 | 日本一区二区三区四区 | 国产精品一区二区三 | 在线a免费 | 一区二区三区国产 |