springboot整合mybatis 註解實現

springboot 整合myabtis sql預警xml 配置文件實現請見spring-boot整合myabtis

本節中將實現註解完成sql

首先需要了解幾個註解@Select ,@Update ,@Delete,@Insert

以上節獲取role 爲例

package com.zyc.springboot.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import com.zyc.springboot.entity.Role;

@Mapper
public interface RoleDao {

	@Select(value="select id ,role_name as roleName from role where id=#{id}")
	public List<Role> getRole(String id);
}

@Upate,@Delete,@Insert同理,上方select語句得到的結果要和Role類中的屬性保持一致可使用@Results註解

package com.zyc.springboot.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import com.zyc.springboot.entity.Role;

@Mapper
public interface RoleDao {

	@Select(value="select id ,role_name from role where id=#{id}")
	@Results({@Result(property="id",column="id"),
	@Result(property="roleName",column="role_name")
	})
	public List<Role> getRole(String id);
}

上面這種方法拼寫複雜的sql不太方便可以使用@SelectProvider,@UpdateProvider,@DeleteProvider,@InsertProvider

使用@SelectProvider註解如下

package com.zyc.springboot.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.SelectProvider;

import com.zyc.springboot.entity.RoleProvider;
import com.zyc.springboot.entity.Role;

@Mapper
public interface RoleDao {

	
	@SelectProvider(type=RoleProvider.class,method="getRole")
	@Results({@Result(property="id",column="id"),
		@Result(property="roleName",column="role_name")
		})
	public List<Role> getRole(@Param("id")String id,@Param("name")String name);
}

RoleProvider實現類如下,多個參數要使用Map接收,並且在dao層使用@Param註解與之對應

package com.zyc.springboot.entity;

import java.util.Map;
import org.apache.ibatis.jdbc.SQL;

import com.zyc.springboot.util.StringUtils;

/**
 * 拼接sql類實現
 * @author Administrator
 *
 */
public class RoleProvider {

	 public String getRole(Map<String,Object> param) {
	        SQL sql = new SQL().SELECT("*").FROM("Role");
	        String id= param.get("id").toString();
	        if (id!=null&&!id.trim().equals("")) {
	            sql.WHERE("id = #{id}");
	        }
	        String roleName= param.get("name").toString();
	        if (roleName!= null&&!roleName.trim().equals("")) {
	            sql.WHERE(" role_name LIKE #{roleName}");
	        }
	        System.out.println(sql.toString());
	        return sql.toString();
	    }
}

@UpdateProvider,@DeleteProvider,@InsertProvider同理


發佈了72 篇原創文章 · 獲贊 51 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章