1. 程式人生 > 其它 >mybatis insert標籤

mybatis insert標籤

一、insert標籤

MyBatis insert 標籤用來定義插入語句,執行插入操作。當 MyBatis 執行完一條插入語句後,就會返回其影響資料庫的行數。insert 標籤中常用的屬性如下表。

如以下示例語句

注意:insert 標籤中沒有 resultType 屬性,只有查詢操作才需要對返回結果型別進行相應的指定。

二、傳遞多個引數

在實際的開發過程中,往往需要使用多個引數來實現給對映器傳遞多個引數,傳遞方式有以下三種:

  1. 使用 Map 傳遞引數
  2. 使用註解傳遞引數
  3. 使用 JavaBean 傳遞引數

2.1使用map傳遞引數

1》複製【mybatis嚐鮮】這一節中的mybatisDemoA2專案程式碼,生成mybatisDemoA4專案,開啟net.biancheng.mapper包下的WebsiteMapper介面類,新增以下方法:

public int addWebsiteByMap(Map<String, String> params);

2》開啟net.biancheng.mapper包下的WebsiteMapper.xml 中,新增以下配置內容,注意原來內容不要動:

<!--接收 Map 引數 -->
<insert id="addWebsiteByMap" parameterType="map">
insert into Website (name, url,age,country) values (#{name},#{url},#{age},#{country})
</insert>

3》在net.biancheng.test包新增testMap類,程式碼如下:

package net.biancheng.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.biancheng.mapper.WebsiteMapper;
import net.biancheng.po.Website;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class testMap {

public static void main(String[] args) {
InputStream config;
try {
config = Resources.getResourceAsStream("mybatis-config.xml");//讀取配置檔案
SqlSessionFactory ssf = new SqlSessionFactoryBuilder()
.build(config);
SqlSession ss = ssf.openSession();//建立sqlsession物件
WebsiteMapper websiteMapper = ss.getMapper(WebsiteMapper.class); //獲取指定物件
Map<String, String> params = new HashMap<>();//建立map物件
params.put("name", "程式設計幫");
params.put("url", "https://www.biancheng.net/");
params.put("age", "26");
params.put("country", "中國");
int i = websiteMapper.addWebsiteByMap(params);//呼叫配置檔案中的指定id執行該方法
if(i>0){
System.out.println("通過 Map成功向資料庫中添加了 " + i + " 條記錄");
List<Website> websitelist = websiteMapper.selectAllWebsite();//獲取所有記錄
for (Website site : websitelist) {
System.out.println(site.show());
}
}
ss.commit();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

4》執行程式碼,結果如下:

資料庫裡也看到了剛才新增的記錄

2.2使用註解傳遞引數

我們還可以使用 MyBatis 提供的 @Param 註解給註解器傳遞引數

1》開啟net.biancheng.mapper包下的WebsiteMapper介面類,新增以下方法,注意原有程式碼不要動:

public int addWebsiteByParam(@Param("name") String name,
@Param("url") String url, @Param("age") String age,
@Param("country") String country);

2》在WebsiteMapper.xml 中,新增以下配置內容,注意原來內容不要動:

<!--接收 @Param 註解傳遞的引數 -->
<insert id="addWebsiteByParam">
insert into Website (name,
url,age,country,createtime) values (#{name}, #{url}, #{age},#{country})
</insert>

3》在net.biancheng.test包新增testPara類,程式碼如下:

package net.biancheng.test;

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.biancheng.mapper.WebsiteMapper;
import net.biancheng.po.Website;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class testPara {

public static void main(String[] args) {
InputStream config;
try {
config = Resources.getResourceAsStream("mybatis-config.xml");//讀取配置檔案
SqlSessionFactory ssf = new SqlSessionFactoryBuilder()
.build(config);
SqlSession ss = ssf.openSession();//建立sqlsession物件
WebsiteMapper websiteMapper = ss.getMapper(WebsiteMapper.class); //獲取指定物件
int i = websiteMapper.addWebsiteByParam("萊特茵","http://www.lt.com",12,"美國");//呼叫配置檔案中的指定id執行該方法
if(i>0){
System.out.println("成功向資料庫中添加了 " + i + " 條記錄");
List<Website> websitelist = websiteMapper.selectAllWebsite();//獲取所有記錄
for (Website site : websitelist) {
System.out.println(site.show());
}
}
ss.commit();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

4》執行程式碼,程式執行結果如下:

資料庫中成功看到剛才新增的記錄