spring Boot註解SQL

更多詳細用法,可以參考mybatis中文網的專門介紹

http://www.mybatis.org/mybatis-3/zh/statement-builders.html

1、在我們寫的動態sql前面添加@Seclect

@Select("select * from d_technician")
	@Results(id = "techniciansMap",
	value = {
			@Result(id = true, property = "id", column = "id"),
			@Result(property = "userId",	 column = "user_id"),
			@Result(property = "skilful",	 column = "skilful"),
			@Result(property = "company", 	column = "company"),
			@Result(property = "workYear", 	column = "work_year"),
			@Result(property = "resume", 	column = "resume"),
			@Result(property = "star", 		column = "star"),
			@Result(property = "deal", 	column = "deal"),
			@Result(property = "likeNum", 	column = "like_num"),
	})
	List<Technician>	getTechnicians();

條件查詢,對條件進行非空判斷,在sql語句中拼接<script></script>

@Select("<script>select * from user <if test=\"id !=null \">where id = #{id} </if></script>")    
public List<User> findUserById(User user); 

2.可以在接口中 創建內部類實現,當然也可以新建一個類

class TechnicianMapperProvider{
	//結構化sql
		public	String	selectTechnicianByPara(Technician technician) {
			return new SQL() {
				{
					SELECT("*");
					FROM("d_technician");
					if (technician.getSkilful() != null) {
						WHERE("skilful = #{skilful}");
					}
					if (technician.getWorkYear() != null) {
						WHERE("work_year = #{workYear}");
					}
					if (technician.getStar() != null) {
						WHERE("star = #{star}");
					}
				}
			}.toString();
		}
	}


//增改刪對應@InsertProvider、@UpdateProvider、@DeleteProvider
 
@SelectProvider(type = TechnicianMapperProvider.class,method = "selectTechnicianByPara")
	List<Technician>	getTechnicians();

//結構化sql 看着高大上,但是多表查詢 貌似不行,ON 字段沒有(如果有遇到,用上面可以實現的,歡迎評論 )
public	String	selectTechnicianByPara(Technician technician) {
		String sql = "select * from d_technician";
        if (technician.getSkilful() != null) {
						sql+="where skiful = #{skiful}";
					}
				
            return sql;
		}


//如果覺得麻煩,可以直接編寫xml腳本,可能更方便些



關於Mapper接口的註解  

注意:使用註解版需要在類上加上@Mapper註解,讓SpringBoot自動掃描能識別

@Mapper  

public interface UserMapper {  

一次行掃描所有mapper 在程序啓動入口加入註解:


@MapperScan(basePackages= {"com.lqy.springboot.mapper"})  
@SpringBootApplication  
public class SpringbootApplication {  

對於上面Mapper結果的映射

注意:@Results 在@Select前後都沒有關係

聲明時給id賦值爲techniciansMap

在其他 方法中,重複使用id爲techniciansMap的結果映射

@ResultMap("techniciansMap")

如果是通過xml文件來配置的話,只需要開啓駝峯命名轉換

<setting name="mapUnderscoreToCamelCase" value="true"/>
mybatis:
  configuration:
    map-underscore-to-camel-case: true


 

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