mybatis xml文件設置:
- 配置調用存儲過程:select標籤中配置:statement=“CELLABLE”
- 標識參數:mode=IN/mode=OUT/mode=INOUT
- 參數類型:jdbcType=“mybatis數據庫對應格式”
mybatis註解配置:
- @Select(value=“”)
- 標識參數:mode=IN/mode=OUT/mode=INOUT
- 參數類型:jdbcType=“mybatis數據庫對應格式”
- 配置調用存儲過程:@Options(statementType = StatementType.CALLABLE)
帶返回值:
- 傳入Map<String,Object>對象,在配置文件設置對應返回參數,自動映射到map中
不帶返回值:
- 可以不聲明參數類型,類似select傳參
存儲過程創建1:
CREATE PROCEDURE `NewProc`(IN name VARCHAR(50),IN addr VARCHAR(100),IN contact VARCHAR(20),IN tel VARCHAR(12),IN account VARCHAR(20),IN pwd VARCHAR(20), IN `character` TINYINT)
BEGIN
DECLARE loginid INT;
INSERT INTO
t_login (login_account,login_pwd,login_character) VALUES(account,pwd,`character`);
SELECT login_id INTO loginid FROM t_login WHERE login_account = account AND login_pwd = pwd AND login_character = `character`;
INSERT INTO t_company (company_name,company_addr,company_contact,company_tel,company_login_id) VALUES (name,addr,contact,tel,loginid);
END;
存儲過程創建2:
CREATE PROCEDURE `NewProc`(IN `companyid` INT,OUT result INT)
BEGIN
DECLARE loginid INT;
SELECT company_login_id INTO loginid FROM t_company WHERE company_id = companyid AND flag=0;
UPDATE t_login SET flag = 1 WHERE login_id = `loginid` AND flag=0;
UPDATE t_company SET flag = 1 WHERE company_id = companyid AND flag=0;
SET result = 1;
END;
註解配置SQL語句(map中存儲輸入參數):
@Select(value = "call add_company(" + "#{name,mode=IN,jdbcType=VARCHAR},"
+ "#{addr,mode=IN,jdbcType=VARCHAR}," +
"#{contact,mode=IN,jdbcType=VARCHAR}," +
"#{tel,mode=IN,jdbcType=VARCHAR}," +
"#{account,mode=IN,jdbcType=VARCHAR}," +
"#{pwd,mode=IN,jdbcType=VARCHAR}," +
"#{character,mode=IN,jdbcType=TINYINT}," +
"#{reuslt,mode=OUT,jdbcType=TINYINT})")
@Options(statementType = StatementType.CALLABLE)
public Boolean insertCompanyBean(Map<String, Object> maop);
註解配置SQL語句(map中存入bean,bean中輸入作爲輸入參數)
@Select(value = "call add_company("
+ "#{bean.name,mode=IN,jdbcType=VARCHAR},"
+ "#{bean.addr,mode=IN,jdbcType=VARCHAR},"
+ "#{bean.contact,mode=IN,jdbcType=VARCHAR},"
+ "#{bean.tel,mode=IN,jdbcType=VARCHAR},"
+ "#{bean.account,mode=IN,jdbcType=VARCHAR},"
+ "#{bean.pwd,mode=IN,jdbcType=VARCHAR},"
+ "#{bean.character,mode=IN,jdbcType=TINYINT},"
+ "#{result,mode=OUT,jdbcType=TINYINT})")
@Options(statementType = StatementType.CALLABLE)
public Boolean insertCompanyBean(Map<String, Object> map);
xml Mapper配置SQL2語句:
<select id="deleteCompanyBean" parameterType="java.util.Map" statementType="CALLABLE">
{
call
delete_company(
#{bean.id,mode=IN,jdbcType=BIGINT},#{result,mode=OUT,jdbcType=TINYINT})
}
</select>
測試類:
public class CompanyTest {
/**
* 測試註解配置存儲過程,map放輸入參數
* @throws IOException
*/
@Test
public void insertCompany() throws IOException {
ApplicationContext context = new ClassPathXmlApplicationContext("config/applicationContext.xml");
ICompanyDao dao = context.getBean(ICompanyDao.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "name");
map.put("addr", "addr");
map.put("contact", "contact");
map.put("tel", "tel");
map.put("account", "account");
map.put("pwd", "pwd");
map.put("character", 1);
System.out.println(dao.insertCompanyBean(map));
System.out.println(map.get("reuslt"));
}
/**
* 測試註解存儲過程:map中傳入bean,bean中存放輸入參數
* @throws IOException
*/
@Test
public void insertCompany2() throws IOException {
ApplicationContext context = new ClassPathXmlApplicationContext("config/applicationContext.xml");
ICompanyDao dao = context.getBean(ICompanyDao.class);
Map<String, Object> map = new HashMap<String, Object>();
CompanyBean bean = new CompanyBean();
bean.setName("name");
bean.setAddr("addr");
bean.setTel("tel");
bean.setContact("contact");
bean.setPwd("pwd");
bean.setCharacter(1);
map.put("bean", bean);
System.out.println(dao.insertCompanyBean(map));
System.out.println(map.get("reuslt"));
}
/**
* 測試xml配置mapper存儲過程:map中傳入bean,bean中存放輸入參數
* @throws IOException
*/
@Test
public void insertCompany3() throws IOException {
ApplicationContext context = new ClassPathXmlApplicationContext("config/applicationContext.xml");
ICompanyDao dao = context.getBean(ICompanyDao.class);
Map<String, Object> map = new HashMap<String, Object>();
CompanyBean bean = new CompanyBean();
bean.setId(1);
map.put("bean", bean);
System.out.println(dao.deleteCompanyBean(map));
System.out.println(map.get("result"));
}
}