當前位置:首頁 » 存儲配置 » mybatis存儲list對象

mybatis存儲list對象

發布時間: 2022-07-26 05:21:33

Ⅰ 求助myBatis sqlMap foreach 對象中的list傳入,報錯

直接傳個實體對象進去,在service層 javaBean bean =new JavaBean ();
bean.setId(id);
bean.setName(name);
.insert(bean);
上面的id,name等是service方法的各個參數
然後在myBatis 中的sql語句中直接引用各個屬性就行了xx=#{id},xx=#{name}等等的
parametertype="你的實體名,也可以寫實體的別名,這個別名是在sqlConfig.xml中";

Ⅱ mybatis 查詢資料庫返回值某欄位是 List 該怎麼搞

解決方法:如果確認是單條數據,可以直接 Object? ***(**); 。沒有封裝成對象時,默認返回的是List<Map<欄位名稱String,列值Object>>這樣的數據。Dao介面:
List<Map<String,Object>> list(Integer id);
SQL:
<select id="list" parameterType="Integer" resultType="Map">。

拓展:

1、MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。iBATIS一詞來源於"internet"和"abatis"的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(sDAO)。

2、MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成資料庫中的記錄。

Ⅲ Oracle中存儲過程返回自定義的集合類型,Java中使用mybatis返回List集合類型

存儲過程我不太熟,給你一個調用儲存過程mybatis的實例參考:

<mappernamespace="entity.puserMapper">	
<!--調用存儲過程-->
<selectid="getCount"parameterMap="getUserCountMap"statementType="CALLABLE">
CALLmyts.ges_user_count(?,?)
</select>
<parameterMaptype="java.util.Map"id="getUserCountMap">
<parameterproperty="sexid"mode="IN"jdbcType="INTEGER"/>
<parameterproperty="usercount"mode="OUT"jdbcType="INTEGER"/>
</parameterMap>
</mapper>

主要是定義好parameterMap就行了

Ⅳ mybatis獲取一個list怎麼添加到資料庫里

思路為採用Oracle中insert語句的高級用法:INSERT ALL ,批量插入數據:

INSERT ALL舉例:

1、建測試表

CREATETABLEEDW_INT
(
AGMT_NOVARCHAR2(40BYTE)NOTNULL,
AGMT_SUB_NOVARCHAR2(4BYTE)NOTNULL,
NEED_REPAY_INTNUMBER(22,2),
CURR_PERIODNUMBER(4)NOTNULL
);
CREATETABLEEDW_INT_1
(
AGMT_NOVARCHAR2(40BYTE)NOTNULL,
AGMT_SUB_NOVARCHAR2(4BYTE)NOTNULL,
NEED_REPAY_INTNUMBER(22,2),
CURR_PERIODNUMBER(4)NOTNULL
);
CREATETABLEEDW_INT_2
(
AGMT_NOVARCHAR2(40BYTE)NOTNULL,
AGMT_SUB_NOVARCHAR2(4BYTE)NOTNULL,
NEED_REPAY_INTNUMBER(22,2),
CURR_PERIODNUMBER(4)NOTNULL
);

2.插入測試數據

INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20003874','2104',3126.5,7);
INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20003874','2104',3290.76,6);
INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20003874','2104',3454.06,5);
INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20003874','2104',3616.41,4);
INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20017143','2104',2350.86,0);
INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20017143','2104',3566.55,0);
INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20018273','2104',1639.46,0);
INSERTINTOEDW_INT
(AGMT_NO,AGMT_SUB_NO,NEED_REPAY_INT,CURR_PERIOD)
VALUES
('20018273','2104',2080.49,0);
COMMIT;

3.insert all-不帶條件

insertall
intoedw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)
values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
intoedw_int_2(agmt_no,agmt_sub_no,curr_period)
values(agmt_no,'1234',curr_period)
selectagmt_no,agmt_sub_no,need_repay_int,curr_periodfromedw_int;
commit;

結合該問題具體分析:

  1. mybatis 的和相關的sql寫法如下:


<insertid="batchSave">
INSERTALL
<foreachcollection="list"item="item">
INTOFSP_BUSINESS_INTEREST_REPORT
(
ID,
BUSINESS_DAY,
LOAN_NO,
CIF_NO,
CIF_NAME,
LOAN_TYPE,
REPAY_WAY,
TERM_TYPE,
VOUCH_WAY,
CHANNEL_TYPE,
LOAN_BEGIN_DATE,
LOAN_END_DATE,
RATE_BEGIN_DATE,
RATE_END_DATE,
AMT,
RATE_TYPE,
RATE,
RATE_AMT,
PAY_TYPE,
REPORT_OUT_FLAG,
REPORT_OUT_DATE,
REPORT_OUT_AMT,
CREATOR,
CREATE_TIME,
UPDATOR,
UPDATE_TIME
)VALUES(
getSeqByName('SEQ_FSP_BUS_INT_REPORT'),
#{businessDay,jdbcType=VARCHAR},
#{loanNo,jdbcType=VARCHAR},
#{cifNo,jdbcType=VARCHAR},
#{cifName,jdbcType=VARCHAR},
#{loanType,jdbcType=VARCHAR},
#{repayWay,jdbcType=VARCHAR},
#{termType,jdbcType=VARCHAR},
#{vouchWay,jdbcType=VARCHAR},
#{channelType,jdbcType=VARCHAR},
#{loanBeginDate,jdbcType=DATE},
#{loanEndDate,jdbcType=DATE},
#{rateBeginDate,jdbcType=DATE},
#{rateEndDate,jdbcType=DATE},
#{amt,jdbcType=NUMERIC},
#{rateType,jdbcType=VARCHAR},
#{rate,jdbcType=NUMERIC},
#{rateAmt,jdbcType=NUMERIC},
#{payType,jdbcType=VARCHAR},
#{reportOutFlag,jdbcType=VARCHAR},
#{reportOutDate,jdbcType=DATE},
#{reportOutAmt,jdbcType=NUMERIC},
#{creator,jdbcType=VARCHAR},
#{createTime,jdbcType=DATE},
#{updator,jdbcType=VARCHAR},
#{updateTime,jdbcType=DATE}
)
</foreach>
SELECT1FROMDUAL
</insert>

2.中介面如下定義:

voidbatchSave(@Param("list")List<BusinessInterestReport>list);

Ⅳ mybatis oracle 批量修改 前台怎麼傳list到後台

你可以定義個對象MonthObject,保存1-12的月份,然後頁面用List去接收數據傳到後台,或者用Map接受數據傳到後台,反正後台寫解析簡單

Ⅵ mybatis怎麼用list集合

直接傳個實體對象進去,在service層 JavaBean bean =new JavaBean (); bean.setId(id); bean.setName(name); .insert(bean); 上面的id,name等是service方法的各個參數 然後在myBatis 中的sql語句中直接引用各個屬性就行了xx=#{id},xx=#{name}

Ⅶ mybatis傳值List類型的參數如何遍歷

基本概念

WHERE id=1 OR id=10 OR id=16

在查詢條件中,查詢條件定義成一個sql片段,需要修改sql片段

如圖所示

案例:

1.創建測試類
@Test
public void findUserList() throws Exception{
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
UserQueryVo queryVo = new UserQueryVo();
UserCustomer customer = new UserCustomer();
queryVo.setCustomer(customer);
List<Integer> ids=new ArrayList<Integer>();
ids.add(1);
ids.add(10);
ids.add(22);
queryVo.setIds(ids);
List<UserCustomer> list = mapper.findUserList(queryVo);
for (UserCustomer userCustomer : list) {
System.out.println(userCustomer.getId()+":"+userCustomer.getUsername());
}
session.close();
}
2.創建UserQueryVo
public class UserQueryVo {
//傳遞多個id
private List<Integer> ids;
//在這里包裝查詢條件(用戶查詢條件)
/*private User user;*/
private UserCustomer customer;
set get 省
}
public class UserCustomer extends User {

//在這裡面進行擴展用戶信息


}
public class User implements Serializable {

private int id;
private String username;
private Date birthday;
private String sex;
private String address;

//添加訂單屬性
private List<Orders> ordersList;
set get 省

3. UserMapper

public interface UserMapper {
//用戶信息綜合查詢列表
public List<UserCustomer> findUserList(UserQueryVo queryVo) throws Exception;

}

4.mapper.xml
<!-- 用戶綜合查詢列表

#{customer.sex} : 取出pojo包裝類型裡面的性別的值

${customer.name}: 取出pojo對象裡面的用戶名稱

-->
<select id="findUserList" parameterType="UserQueryVo" resultType="UserCustomer">
select * from user <!-- user.sex=#{customer.sex} and user.username like '%${customer.username}%' -->

<where>
<!-- 如果引用sql片段不在這個 映射文件中那麼前面就要加上namespace -->
<include refid="query_sql_where"/>
</where>
<!-- 定義一個sql 片段
id: 是sql片段的唯一標識
基於單表定義sql片段 , 那麼這樣sql片段重用性才高;
sql片段裡面不要包含where

-->
<sql id="query_sql_where">

<if test="customer.sex!=null and customer.sex!=''">

and user.sex=#{customer.sex}
</if>
<if test="customer.username!=null and customer.username!=''">

and user.username like '%${customer.username}%'
</if>
<if test="ids!=null">
<!--
collection : 指定對象集合裡面的屬性 ids
item : 遍歷的時候每次生成的名稱 user_id
open : 開始遍歷的時候 拼接串AND (

close : 遍歷結束時拼接串 )

separator : 每次遍歷的時候要拼接的串
-->
<!-- AND ( id=1 OR id=10 OR id=22 -->
<!-- <foreach collection="ids" item="user_id" open="AND ( " close=")" separator="or">

每次遍歷需要拼接的串

id=#{user_id}
</foreach> -->
<!-- AND id IN(1,10,22)-->
<foreach collection="ids" item="user_id" open="AND id IN( " close=")" separator=",">

<!-- 每次遍歷需要拼接的串 -->

#{user_id}
</foreach>


</if>

</sql>

Ⅷ 求教MyBatis批量插入參數是List<Map<String,Object>gt;的問題

1.如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list
2.如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
3.如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以封裝成map
關於foreach的具體例子在這里就先不舉,以後有機會可以把每一種情況都舉一個例子列出來。

Ⅸ mybatis 對象中屬性 包含List<String>這種映射怎麼處理

<resultMap type="Answer" id="answer">
<id property="id" column=""/>
<result property="answer" column=""/>
<collection property="oid" ofType="int">
<constructor>
<arg column=""/>
</constructor>
</collection>
<collection property="name" ofType="string">
<constructor>
<arg column=""/>
</constructor>
</collection>
</resultMap>
通過Integer和String的構造函數注入,具體的欄位名稱自己對好入座

熱點內容
數碼管動態顯示程序c語言 發布:2024-09-29 07:34:57 瀏覽:900
蘋果搬家到安卓怎麼辦 發布:2024-09-29 07:13:46 瀏覽:355
編程貓登錄平台 發布:2024-09-29 07:03:27 瀏覽:312
xp無線密碼怎麼看 發布:2024-09-29 06:48:23 瀏覽:202
命理與資料庫 發布:2024-09-29 06:39:19 瀏覽:448
華為電腦本機網站配置怎麼打開 發布:2024-09-29 06:26:11 瀏覽:518
android屏幕截圖源碼 發布:2024-09-29 06:22:06 瀏覽:540
天籟速派哪個配置好 發布:2024-09-29 06:21:15 瀏覽:112
高計算型雲伺服器的應用場景 發布:2024-09-29 06:21:14 瀏覽:307
Linux在嵌入式開發 發布:2024-09-29 05:36:06 瀏覽:612