1. 程式人生 > >Mybatis中如何將POJO作為參數傳入sql

Mybatis中如何將POJO作為參數傳入sql

tor 後來 encoding public .project bat 接口 odi 插入數據

今天在工作時,需要將獲取的用戶的註冊信息插入數據庫,開始的做法是將所有的model的屬性作為DAO接口的參數,後來想想不對勁,要是有100個屬性,那我這個接口豈不是要有100個參數傳進來?

於是我就考慮將整個Model或者DTO作為DAO接口的參數,向SQL傳參,具體的實現如下:

(1)定義DAO接口:

1 @Repository
2 public interface ProjectDtoMapper {
3 
4     void addProject(@Param("projectDto")ProjectDto projectDto); //這裏一定要加這個註解,不然在配置文件中會找不到這個DTO對象
5 6 }

(2)定義service:

 1 @Service
 2 public class ProjectService {
 3     @Resource
 4     private ProjectDtoMapper projectDtoMapper;
 5 
 6     public void addProject(ProjectDto projectDto) {
 7         projectDtoMapper.addProject(projectDto);
 8     }
 9 
10  }

(3)Mapper.xml配置(重要):

 1 <?
xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.kingnetdc.kingnetio.innerapi.service.db.dao.ProjectDtoMapper"> 4 5 <insert id="addProject" parameterType="com.kingnetdc.kingnetio.innerapi.service.db.dto.background.ProjectDto"
> 6 INSERT INTO dana.auth_projects(project_id,project_name,sort,last_edit_date) VALUES 7 (#{projectDto.project_id},#{projectDto.project_name},#{projectDto.sort},#{projectDto.last_edit_date}) 8 </insert> 9 10 </mapper>

註意:這裏的namespace必須是DAO接口的路徑名+類名,parameterType就是對應的DTO的路徑名+類名,#{}中的參數寫法就是上面接口中加的註解中的別名.屬性的名字。

Mybatis中如何將POJO作為參數傳入sql