YNICTE/Dao/MyBatis/Maps/board.xml

368 lines
22 KiB
XML
Raw Normal View History

2020-10-12 14:39:23 +09:00
<?xml version="1.0" encoding="utf-8"?>
<sqlMap xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/tr/xmlschema-1/" namespace="">
<alias>
<typeAlias alias="board" type="NP.Model.Board, NP.Model" />
<typeAlias alias="bm" type="NP.Model.BoardMaster, NP.Model" />
<typeAlias alias="bmo" type="NP.Model.BoardMasterOpening, NP.Model" />
<typeAlias alias="boardcmt" type="NP.Model.BoardCMT, NP.Model "/>
</alias>
<cacheModels>
<cacheModel id="boardcache" implementation="LRU" >
<flushInterval hours="1" />
<property name="CacheSize" value="1000" />
</cacheModel>
</cacheModels>
<resultMaps></resultMaps>
<statements>
<select id="board.bms" parameterClass="hashtable" resultClass="bm">
select a.*
from (
select a.bmno,a.bmcode,a.bmposition,a.bmname,a.bmdesc,a.bmtype,a.disptype,a.isuseopening,a.isreply,a.isopen,a.isdefault,a.cdt,a.udt
,a.bmno value,a.bmname text
,b.asno,b.asname
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt desc</isNull>) rno
,count(a.cno) over() pagetotalcount
from boardmaster a
left outer join assign b on b.asno=a.asno
<dynamic prepend="where">
<isNotNull property="bmno" prepend="and">a.bmno=#bmno#</isNotNull>
<isNotNull property="bmnos" prepend="and">a.bmno in ($bmnos$)</isNotNull>
<isNotNull property="bmposition" prepend="and">a.bmposition=#bmposition#</isNotNull>
<isNotNull property="bmtype" prepend="and">a.bmtype=#bmtype#</isNotNull>
<isNotNull property="disptype" prepend="and">a.disptype=#disptype#</isNotNull>
<isNotNull property="bmname" prepend="and">a.bmname=#bmname#</isNotNull>
<isNotNull property="bmcode" prepend="and">a.bmcode=#bmcode#</isNotNull>
<isNotNull property="isopen" prepend="and">a.isopen=#isopen#</isNotNull>
<isNotNull property="asno" prepend="and">a.asno=#asno#</isNotNull>
<isNotNull property="isdefaults" prepend="and">a.isdefault in ($isdefaults$)</isNotNull>
<isNotNull property="isdefault" prepend="and">a.isdefault =#isdefault#</isNotNull>
</dynamic>
) a
<include refid="sql.pagedynamic"></include>
order by a.rno
</select>
<select id="board.bms.forassign" parameterClass="hashtable" resultClass="bm">
select a.*
from (
select a.bmno,a.bmcode,a.bmposition,a.bmname,a.bmdesc,a.bmtype,a.disptype,a.isuseopening,a.isreply,a.isopen,a.isdefault,a.cdt,a.udt
,a.bmno value,a.bmname text
,b.asno,b.asname
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.cdt desc</isNull>) rno
,count(a.cno) over() pagetotalcount
from assign a0
inner join boardmaster a on a.asno=a0.asno
<isNotNull property="isdefault">and a.isdefault=#isdefault#</isNotNull>
left outer join assign b on b.asno=a.asno
where a0.isdel=0
<isNotNull property="subdomain" prepend="and">a0.subdomain=#subdomain#</isNotNull>
) a
<include refid="sql.pagedynamic"></include>
order by a.rno
</select>
<select id="board.bmos" parameterClass="int" resultClass="bmo">
select a.opno,a.bmno,a.opname,a.isuse,a.dsort
,a.opno value,a.opname text
from boardmasteropening a
where a.bmno=#bmno# and a.isdel=0
order by a.dsort,a.cdt
</select>
<select id="board.check.bmcode" parameterClass="hashtable" resultClass="bm">
select a.bmno
from boardmaster a
<dynamic prepend="where">
<isNotNull property="bmnonot" prepend="and">a.bmno &lt;&gt; #bmnonot#</isNotNull>
<isNotNull property="bmcode" prepend="and">a.bmcode=#bmcode#</isNotNull>
</dynamic>
</select>
<insert id="board.bm.in" parameterClass="bm">
insert into boardmaster (bmcode,bmposition,bmname,bmdesc,bmtype,disptype,isuseopening,isreply,isopen,isdefault,<include refid="sql.inc"></include>)
values (#bmcode#,#bmposition#,#bmname#,#bmdesc#,#bmtype#,#disptype#,#isuseopening#,#isreply#,#isopen#,0,<include refid="sql.inv"></include>);
<selectKey type="post" property="bmno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="board.bm.up" parameterClass="bm">
update boardmaster set <include refid="sql.up"></include>
,bmname =#bmname#
,bmdesc =#bmdesc#
,bmtype =case when isdefault&gt;0 then bmtype else #bmtype# end
,disptype =case when isdefault&gt;0 then disptype else #disptype# end
,isuseopening =#isuseopening#
,isreply =#isreply#
,isopen =case when isdefault&gt;0 then isopen else #isopen# end
where bmno=#bmno#
</update>
<update id="board.bd.read" parameterClass="int">
update board set rcount = rcount +1 where bno=#bno#
</update>
<update id="board.bmo.del" parameterClass="bm">
update boardmasteropening set isdel=1 where bmno=#bmno# <isNotNull property="opnosnot" prepend="and">opno not in ($opnosnot$)</isNotNull>
</update>
<update id="board.bmo.save" parameterClass="bm">
<isNotNull property="inquery">
insert into boardmasteropening (bmno,opname,isuse,isdel,dsort,cdt,cno,udt,uno,uip)
values $inquery$;
</isNotNull>
<isNotNull property="upquery">
update boardmasteropening a
inner join (
<iterate property="BMOs" open="" conjunction="union all" close="">
select #BMOs[].opno# opno, #BMOs[].opname# opname,#BMOs[].isuse# isuse,#BMOs[].dsort# dsort
</iterate>
) b on b.opno=a.opno
set a.opname=b.opname,a.isuse=b.isuse,a.dsort=b.dsort,udt=now(),uno=#uno#,uip=#uip#
where a.bmno=#bmno#
</isNotNull>
</update>
<update id="board.bmassign.save" parameterClass="hashtable">
update boardmaster set <include refid="sql.up"></include>,isopen=1 where bmno in (select bmno from (select bmno from boardmaster where asno=#asno# and isdefault=3) a);
insert into boardmaster (bmcode,bmposition,bmname,bmdesc,bmtype,disptype,isuseopening,isreply,isopen,isdefault,asno,<include refid="sql.inc"></include>)
select concat('assignnotice_',#asno#),0,'공지사항',null,0,0,0,1,1,3,#asno#,<include refid="sql.inv"></include>
from (select 1 col1) a
left outer join boardmaster b on b.asno=#asno# and b.isdefault=3
where b.bmno is null;
</update>
<update id="board.bmassign.save2" parameterClass="hashtable">
update boardmaster set <include refid="sql.up"></include>,isopen=0 where bmno in (select bmno from (select bmno from boardmaster where asno=#asno# and isdefault=3) a)
</update>
<select id="board.bs" parameterClass="hashtable" resultClass="board">
select a.rno,a.pagetotalcount,a.pcno
,e.asname
,c.bmno,c.bmname,c.isuseopening,c.isreply,c.bmtype
,f.opname
2022-05-06 16:40:02 +09:00
,b.cno,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,d.userid cnoid
,b.rcount,b.rpcount,b.fgno,b.fgnothumb,case when #getcontents# is null then '' else b.contents end contents
2020-10-12 14:39:23 +09:00
,d.usertype
,g.fileurl
from (
select a.*
from (
select b.bno
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">b.istop desc,case when b.pbno is null then b.cdt else b2.cdt end desc,case when b.pbno is null then 0 else 1 end</isNull>) rno
,count(a.cno) over() pagetotalcount,b2.cno pcno
from boardmaster a
inner join board b on b.bmno=a.bmno
<isNotNull property="bno">and b.bno=#bno#</isNotNull>
and b.isdel=0
<isNotNull property="opno">and b.opno=#opno#</isNotNull>
<isNotNull property="isopen">and b.isopen=#isopen#</isNotNull>
<isNotNull property="issecr">and b.issecr=#issecr#</isNotNull>
<isNotNull property="opno">and b.opno=#opno#</isNotNull>
<isNotNull property="isbase" prepend="and">b.pbno is null</isNotNull>
<isNotNull property="cno" prepend="and">b.cno=#cno#</isNotNull>
<isNotNull property="cmno" prepend="and">b.cmno=#cmno#</isNotNull>
2022-07-08 09:43:25 +09:00
<isNotNull property="bmposition" prepend="and">a.bmposition=#bmposition#</isNotNull>
2020-10-12 14:39:23 +09:00
left outer join board b2 on b.pbno is not null and b2.bno=b.pbno
inner join users c on c.userno=b.cno
<dynamic prepend="where">
<isNotNull property="bmno" prepend="and">a.bmno=#bmno#</isNotNull>
<isNotNull property="asno" prepend="and">a.asno=#asno#</isNotNull>
<isNotNull property="scc" prepend="and">(b.subject like concat('%',#scc#,'%') or b.contents like concat('%',#scc#,'%') or c.username=#scc#)</isNotNull>
</dynamic>
) a
<include refid="sql.pagedynamic"></include>
) a
inner join board b on b.bno=a.bno
<!--left outer join board b2 on b2.pbno=b.bno and b2.isdel=0-->
inner join boardmaster c on c.bmno=b.bmno
inner join users d on d.userno=b.cno
left outer join assign e on e.asno=c.asno
left outer join boardmasteropening f on f.opno=b.opno
left outer join fileinfo g on g.fgno=b.fgnothumb and g.isdel=0
order by a.rno
</select>
<select id="board.bs.bypbnos" parameterClass="string" resultClass="board">
select f.opname,a.bno,a.pbno,a.subject,a.cdt,b.username cnoname,a.rpcount,a.issecr,a.cno
,case when #getcontents# is null then '' else a.contents end contents
,b.usertype
from board a
inner join users b on b.userno=a.cno
left outer join boardmasteropening f on f.opno=a.opno
where a.pbno in ($pbnos$) and a.isopen=1 and a.isdel=0
</select>
<select id="board.roombs" parameterClass="hashtable" resultClass="board">
select a.rno,a.pagetotalcount
,e.asname
,c.bmno,c.bmname,c.isuseopening,c.isreply
,f.opname
<!--,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,b.rcount,b.fgno,b.fgnothumb,b.cmno-->
,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,d.userid cnoid, b.rcount,b.fgno,b.fgnothumb,b.cmno
2020-10-12 14:39:23 +09:00
,g.cname,g.classno
,h.tyear,h.tseq
from (
select a.*
from (
select b.bno
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">b.istop desc,case when b.pbno is null then b.cdt else b2.cdt end desc,case when b.pbno is null then 0 else 1 end</isNull>) rno
,count(a.cno) over() pagetotalcount
from boardmaster a
inner join board b on b.bmno=a.bmno and b.isdel=0 <isNotNull property="cmno">and b.cmno=#cmno#</isNotNull>
left outer join board b2 on b.pbno is not null and b2.bno=b.pbno
inner join users c on c.userno=b.cno
inner join cm d on d.cmno=b.cmno
inner join term e on e.tmno=d.tmno <isNotNull property="tmno">and d.tmno=#tmno#</isNotNull> <isNotNull property="tyear">and e.tyear=#tyear#</isNotNull>
<isNotNull property="teacherno">
inner join cmprof cp on cp.cmno=b.cmno and cp.userno=#teacherno#
</isNotNull>
where a.bmposition=1
<isNotNull property="bmno" prepend="and">a.bmno=#bmno#</isNotNull>
<isNotNull property="asno" prepend="and">a.asno=#asno#</isNotNull>
<isNotNull property="scc" prepend="and">(b.subject like concat('%',#scc#,'%') or b.contents like concat('%',#scc#,'%') or c.username=#scc#)</isNotNull>
) a
<include refid="sql.pagedynamic"></include>
) a
inner join board b on b.bno=a.bno
inner join boardmaster c on c.bmno=b.bmno
inner join users d on d.userno=b.cno
inner join cm g on g.cmno=b.cmno
inner join term h on h.tmno=g.tmno
left outer join assign e on e.asno=c.asno
left outer join boardmasteropening f on f.opno=b.opno
order by a.rno
</select>
<select id="board.get" parameterClass="long" resultClass="board">
select e.asname
,c.bmno,c.bmname,c.isuseopening,c.isreply,c.disptype,c.bmtype
,f.opname
,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,b.rcount,b.fgno,b.fgnothumb,b.opno,b.contents,b.isopen
,b2.subject psubject
,g.cmno,g.cname,g.classno
,h.tmno,h.tyear,h.tseq
,count(b3.bno) ccount
from board b
inner join boardmaster c on c.bmno=b.bmno
inner join users d on d.userno=b.cno
left outer join board b2 on b2.bno=b.pbno and b2.isdel=0
left outer join board b3 on b3.pbno=b.bno and b3.isdel=0
left outer join assign e on e.asno=c.asno
left outer join boardmasteropening f on f.opno=b.opno
left outer join cm g on g.cmno=b.cmno
left outer join term h on h.tmno=g.tmno
where b.bno=#bno#
group by e.asname
,c.bmno,c.bmname,c.isuseopening,c.isreply,c.disptype,c.bmtype
,f.opname
,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username,b.rcount,b.fgno,b.fgnothumb,b.opno,b.contents,b.isopen
,b2.subject
,g.cmno,g.cname,g.classno
,h.tmno,h.tyear,h.tseq
</select>
<select id="board.bcmt.cnt" parameterClass="hashtable" resultClass="board">
select a.bno,count(b.bcno) ccount
from board a
left outer join boardcmt b on b.bno=a.bno and b.isdel=0
<dynamic prepend="where">
<isNotNull property="bnos" prepend="and">a.bno in ($bnos$)</isNotNull>
</dynamic>
group by a.bno
</select>
<select id="board.boardcmts" parameterClass="long" resultClass="boardcmt">
select a.bcno,a.bno,a.ctext,a.isdel,a.cdt,a.udt,a.cno
,b.username cnoname,b.usertype
from boardcmt a
inner join users b on b.userno=a.cno
where a.bno=#bno# and a.isdel=0
order by a.cdt desc
</select>
<insert id="board.in" parameterClass="board">
insert into board (pbno,bmno,opno,subject,contents,fgno,fgnothumb,cmno,rcount,rpcount,isdel,istop,issecr,isopen,<include refid="sql.inc"></include>)
values (#pbno#,#bmno#,#opno#,#subject#,#contents#,#fgno#,#fgnothumb#,#cmno#,0,0,0,#istop#,#issecr#,#isopen#,<include refid="sql.inv"></include>);
<selectKey type="post" property="bno" resultClass="long">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<insert id="board.inp" parameterClass="board">
insert into board (pbno,bmno,opno,subject,contents,fgno,fgnothumb,cmno,rcount,rpcount,isdel,istop,issecr,isopen,<include refid="sql.inc"></include>)
select bno,bmno,opno,#subject#,#contents#,#fgno#,#fgnothumb#,cmno,0,0,0,0,#issecr#,#isopen#,<include refid="sql.inv"></include>
from board where bno=#pbno#;
<selectKey type="post" property="bno" resultClass="long">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="board.up" parameterClass="board">
update board set <include refid="sql.up"></include>
,opno =case when pbno is null then #opno# else opno end
,subject =#subject#
,contents =#contents#
,fgno =#fgno#
,fgnothumb =#fgnothumb#
,istop =case when pbno is null then #istop# else istop end
,issecr =#issecr#
,isopen =#isopen#
where bno=#bno#
</update>
<update id="board.del" parameterClass="hashtable">
update board set <include refid="sql.up"></include>,isdel=1 where bno=#bno# <isNotNull property="cno">and cno=#cno#</isNotNull>
</update>
<insert id="board.boardcmt.in" parameterClass="boardcmt">
update board set rpcount = rpcount+1 where bno=#bno#;
insert into boardcmt (bno,ctext,isdel,<include refid="sql.inc"></include>)
values (#bno#,#ctext#,0,<include refid="sql.inv"></include>);
<selectKey type="post" property="bcno" resultClass="long">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="board.boardcmt.up" parameterClass="boardcmt">
update boardcmt set <include refid="sql.up"></include>
,ctext=#ctext#
where bcno=#bcno# <isGreaterThan property="cno" compareValue="0">and cno=#cno#</isGreaterThan>
</update>
<update id="board.boardcmt.del" parameterClass="hashtable">
update board a
inner join boardcmt b on b.bcno=#bcno# and a.bno=b.bno <isGreaterThan property="cno" compareValue="0">and b.cno=#cno#</isGreaterThan>
set a.rpcount = a.rpcount-1
where a.bno=b.bno;
update boardcmt set <include refid="sql.up"></include>,isdel=1 where bcno=#bcno# <isGreaterThan property="cno" compareValue="0">and cno=#cno#</isGreaterThan>
</update>
<select id="board.bs.forassign" parameterClass="hashtable" resultClass="board">
select a.rno,a.pagetotalcount
,e.asname
,c.bmno,c.bmname,c.isuseopening,c.isreply,c.bmtype
,f.opname
,b.cno,b.bno,b.pbno,b.subject,b.istop,b.issecr,b.cdt,d.username cnoname,b.rcount,b.rpcount,b.fgno,b.fgnothumb,case when #getcontents# is null then '' else b.contents end contents
,d.usertype
,g.fileurl
from (
select a.*
from (
select b.bno
,row_number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">b.istop desc,case when b.pbno is null then b.cdt else b2.cdt end desc,case when b.pbno is null then 0 else 1 end</isNull>) rno
,count(a.cno) over() pagetotalcount
from assign a0
inner join boardmaster a on a.asno=a0.asno
<isNotNull property="bmno" prepend="and">a.bmno=#bmno#</isNotNull>
<isNotNull property="asno" prepend="and">a.asno=#asno#</isNotNull>
<isNotNull property="isdefault">and a.isdefault=#isdefault#</isNotNull>
inner join board b on b.bmno=a.bmno
<isNotNull property="bno">and b.bno=#bno#</isNotNull>
and b.isdel=0
<isNotNull property="opno">and b.opno=#opno#</isNotNull>
<isNotNull property="isopen">and b.isopen=#isopen#</isNotNull>
<isNotNull property="issecr">and b.issecr=#issecr#</isNotNull>
<isNotNull property="opno">and b.opno=#opno#</isNotNull>
left outer join board b2 on b.pbno is not null and b2.bno=b.pbno
inner join users c on c.userno=b.cno
where a0.subdomain=#subdomain# and a0.isdel=0
<isNotNull property="scc" prepend="and">(b.subject like concat('%',#scc#,'%') or b.contents like concat('%',#scc#,'%') or c.username=#scc#)</isNotNull>
) a
<include refid="sql.pagedynamic"></include>
) a
inner join board b on b.bno=a.bno
<!--left outer join board b2 on b2.pbno=b.bno and b2.isdel=0-->
inner join boardmaster c on c.bmno=b.bmno
inner join users d on d.userno=b.cno
left outer join assign e on e.asno=c.asno
left outer join boardmasteropening f on f.opno=b.opno
left outer join fileinfo g on g.fgno=b.fgnothumb and g.isdel=0
order by a.rno
<isNotNull property="limit">limit $limit$</isNotNull>
</select>
<select id="board.bs.forqna" parameterClass="hashtable" resultClass="board">
select a.bno,a.pbno,a.subject,a.contents,a.cdt,a.fgno,f.opname,a.cdt,b.usertype,a.rcount
from board a
inner join users b on b.userno=a.cno
left outer join boardmasteropening f on f.opno=a.opno
where a.bno=#bno# and (a.cno=#cno# or b.usertype in (91,92))
union all
select a.bno,a.pbno,a.subject,a.contents,a.cdt,a.fgno,f.opname,a.cdt,b.usertype,a.rcount
from board a
inner join users b on b.userno=a.cno
left outer join boardmasteropening f on f.opno=a.opno
where a.pbno=#bno#
</select>
</statements>
</sqlMap>