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 < > #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> 0 then bmtype else #bmtype# end
,disptype =case when isdefault> 0 then disptype else #disptype# end
,isuseopening =#isuseopening#
,isreply =#isreply#
,isopen =case when isdefault> 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
2022-12-08 11:06:20 +09:00
<!-- ,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>