⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 配置hibernate(3).mht

📁 hibernate(java 相关)书籍
💻 MHT
📖 第 1 页 / 共 5 页
字号:
      =
//POJO=E7=B1=BB=E6=8C=87=E7=9A=84ID<BR>&nbsp;&nbsp;&nbsp;column=3D"StuID"=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;//=E6=95=B0=E6=8D=AE=E5=BA=93=E4=B8=AD=E7=9A=84=E4=B8=BB=E9=94=
=AE=E5=90=8D=E7=A7=B0<BR>&nbsp;&nbsp;&nbsp;type=3D"java.lang.String"&nbsp=
;&nbsp;&nbsp;=20
      =
//=E5=AD=97=E7=AC=A6=E7=B1=BB=E5=9E=8B<BR>&nbsp;&nbsp;&gt;<BR>&nbsp;&nbsp=
;&nbsp;&nbsp;&lt;generator=20
      class=3D"uuid.hex"/&gt;&nbsp;&nbsp;=20
      =
//=E8=BF=99=E9=87=8C=E7=9A=84uuid.hex=E4=BB=A3=E8=A1=A8=E4=BA=86=E4=B8=80=
=E7=A7=8D=E4=B8=BB=E9=94=AE=E7=9A=84=E7=94=9F=E6=88=90=E6=96=B9=E5=BC=8F<=
BR>&nbsp;&nbsp;&lt;/id&gt;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&lt;prope=
rty=20
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      name=3D"stuName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
//POJO=E4=B8=AD=E7=9A=84=E5=B1=9E=E6=80=A7<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;=20
      =
column=3D"StuName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=E5=B1=9E=E6=80=A7=E5=AF=
=B9=E5=BA=94=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AD=97=E6=AE=B5=E7=9A=84=E5=90=8D=
=E7=A7=B0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      type=3D"java.lang.String" =
//=E5=B1=9E=E6=80=A7=E7=B1=BB=E5=9E=8B<BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
      /&gt;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;property=20
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      name=3D"stuSex"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      column=3D"StuSex"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      type=3D"java.lang.String"<BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
      /&gt;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;property=20
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
      &nbsp;name=3D"stuAge"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      column=3D"StuAge"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      type=3D"java.lang.Integer"<BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
      /&gt;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;property=20
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      name=3D"stuAddress"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      column=3D"StuAddress"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      type=3D"java.lang.String"<BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
/&gt;<BR>&nbsp;&nbsp;<BR>&nbsp;&lt;/class&gt;<BR>&lt;/hibernate-mapping&g=
t;<BR><BR>7.=20
      =E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81<BR><STRONG>HelloTest&nbsp; . =
java</STRONG><BR><BR>package=20
      com.kela.test;</P>
      <P>import org.hibernate.HibernateException;<BR>import=20
      org.hibernate.Session;<BR>import org.hibernate.Transaction;</P>
      <P>import com.kela.hb.pojo.KelaStudent;<BR>import=20
      com.kela.hb.util.HibernateUtil;</P>
      <P>public class HelloTest {<BR><BR>&nbsp;&nbsp;&nbsp; Session =
session =3D=20
      null;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;public void =
testInsert() {</P>
      <P>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Transaction tran =3D=20
      null;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
//=E4=BB=8E&nbsp;=20
      HibernateUtil =E5=BE=97=E5=88=B0 hibernate=E7=9A=84session,&nbsp; =
HibernateUtil=20
      =
.java&nbsp;=E6=96=87=E4=BB=B6=E5=9C=A8=E5=90=8E<BR>&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      session =3D=20
      =
HibernateUtil.currentSession();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;=20
      =
//=E5=90=AF=E5=8A=A8=E4=BA=8B=E5=8A=A1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran=20
      =3D=20
      =
session.beginTransaction();<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      KelaStudent kelaStudent =3D new=20
      =
KelaStudent();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;=20
      =
//=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
kelaStudent.setStuName("=E7=8E=8B=E5=B0=8F=E4=BA=8C");<BR>&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
&nbsp;kelaStudent.setStuSex("T");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;=20
      &nbsp;&nbsp; kelaStudent.setStuAge(new=20
      =
Integer(26));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
&nbsp;kelaStudent.setStuAddress("=E7=94=98=E8=82=83=E5=85=B0=E5=B7=9E");<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
//=E4=BF=9D=E5=AD=98=E5=B9=B6=E6=8F=90=E4=BA=A4=E4=BA=8B=E5=8A=A1<BR>&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
session.save(kelaStudent);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;=20
      &nbsp;=20
      =
session.flush();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;=20
      =
tran.commit();<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      &nbsp; } catch (HibernateException=20
      =
he){<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;=20
      =
&nbsp;System.out.println("=E8=BF=90=E8=A1=8C=E4=B8=AD=E5=8F=91=E7=94=9F=E4=
=BA=86=E9=94=99=E8=AF=AF");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;=20
      &nbsp; try=20
      =
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;=20
      =
&nbsp;&nbsp;HibernateUtil.closeSession();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;=20
      &nbsp;} catch (HibernateException he2)=20
      =
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;=20
      &nbsp;System.out.println("=E5=85=B3=E9=97=AD session=20
      =
=E6=B2=A1=E6=9C=89=E6=88=90=E5=8A=9F");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      &nbsp;}<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; =
}<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;=20
      public static void main(String[] args)=20
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
System.out.println("=20
      =3D=3D=3D=3D=3D=3D=3D=3D=3D =E5=BC=80=E5=A7=8B=E6=B5=8B=E8=AF=95 =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;=20
      HelloTest helloTest =3D new=20
      HelloTest();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
&nbsp;helloTest.testInsert();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
      System.out.println(" =3D=3D=3D=3D=3D=3D=3D=3D=3D SUCCESS =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D");<BR>&nbsp;&nbsp;&nbsp;=20
      }</P>
      <P>}<BR><BR><STRONG>=E4=B8=8B=E9=9D=A2=E6=98=AF =
HibernateUtil&nbsp; .=20
      java</STRONG><BR>/**<BR>&nbsp;* =
HibernateUtil.java<BR>&nbsp;*/<BR>package=20
      com.kela.hb.util;</P>
      <P>import org.apache.commons.logging.Log;<BR>import=20
      org.apache.commons.logging.LogFactory;<BR>import=20
      org.hibernate.Session;<BR>import =
org.hibernate.SessionFactory;<BR>import=20
      org.hibernate.cfg.Configuration;</P>
      <P>public class HibernateUtil {</P>
      <P>&nbsp;&nbsp; private static Log log =3D=20
      LogFactory.getLog(HibernateUtil.class);</P>
      <P>&nbsp;&nbsp; private static final SessionFactory =
sessionFactory;</P>
      <P>&nbsp;&nbsp; static {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
try=20
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      sessionFactory =3D new=20
      =
Configuration().configure().buildSessionFactory();<BR>&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;=20
      } catch (Throwable ex)=20
      =
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo=
g.error("=E5=88=9D=E5=A7=8B=E5=8C=96=20
      SessionFactory =E5=8F=91=E7=94=9F=E9=94=99=E8=AF=AF.",=20
      =
ex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
throw=20
      new=20
      =
ExceptionInInitializerError(ex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =

      }<BR>&nbsp;&nbsp;&nbsp; }</P>
      <P>&nbsp;&nbsp;&nbsp; &nbsp;public static final ThreadLocal =
session =3D new=20
      ThreadLocal();</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static Session =
currentSession()=20
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session =
s =3D=20
      (Session)=20
      session.get();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
if (s=20
      =3D=3D null)=20
      =
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
s=20
      =3D=20
      =
sessionFactory.openSession();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;=20
      =
&nbsp;session.set(s);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      }<BR>&nbsp;&nbsp;&nbsp;&nbsp; return s;<BR>&nbsp;&nbsp;&nbsp; =
}</P>
      <P>&nbsp;&nbsp;&nbsp; public static void closeSession()=20
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session s =3D =
(Session)=20
      =
session.get();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (s =
!=3D=20
      =
null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
s.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.set=
(null);<BR>&nbsp;&nbsp;&nbsp;=20
      }</P>
      <P>}<BR><BR>8. =
=E8=BF=90=E8=A1=8C=E7=BB=93=E6=9E=9C<BR>&nbsp;&nbsp;&nbsp; =
=E8=BF=90=E8=A1=8C <STRONG>HelloTest.java=20
      =
</STRONG>=E6=96=87=E4=BB=B6=EF=BC=8C=E8=A7=82=E5=AF=9F=E6=95=B0=E6=8D=AE=E5=
=BA=93=E4=B8=AD=E7=9A=84=E7=BB=93=E6=9E=9C=EF=BC=8C=E5=8F=AF=E4=BB=A5=E7=9C=
=8B=E5=88=B0=E4=B8=80=E6=9D=A1=E6=95=B0=E6=8D=AE=E8=A2=AB=E6=B7=BB=E5=8A=A0=
=E4=BA=86=E8=BF=9B=E6=9D=A5=E3=80=82<BR><BR>&nbsp;&nbsp;=20
      =
=E6=95=B0=E6=8D=AE=E5=BA=93=E7=BB=93=E6=9E=9C=EF=BC=9A<BR>&nbsp;&nbsp;=20
      =
<STRONG>402880fc07c68f690107c68f6dfd0001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;=E7=8E=8B=E5=B0=8F=E4=BA=8C&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
=E7=94=98=E8=82=83=E5=85=B0=E5=B7=9E<BR></STRONG>&nbsp;&nbsp;&nbsp;<BR>&n=
bsp;&nbsp;=20
      =
=E5=9C=A8=E6=8E=A7=E5=88=B6=E5=8F=B0=E7=9C=8B=E5=88=B0=E5=A6=82=E4=B8=8B=E6=
=97=A5=E5=BF=97=EF=BC=9A<BR>&nbsp;&nbsp;&nbsp; =
<STRONG>Hibernate:<BR>&nbsp;&nbsp;&nbsp;=20
      insert into KELA_STUDENT (StuName, StuSex, StuAge, StuAddress, =
StuID)=20
      values (?, ?, ?, ?, ?)<BR></STRONG>&nbsp;&nbsp; =
<BR>&nbsp;&nbsp;&nbsp;=20
      =
=E5=B0=B1=E6=98=AF=E8=BF=99=E4=B9=88=E7=A5=9E=E5=A5=87=E3=80=82=E4=B8=8D=E9=
=9C=80=E8=A6=81=E6=8C=87=E5=AE=9A SQL =
=E8=AF=AD=E5=8F=A5=E4=B8=80=E6=A0=B7=E8=83=BD=E5=AE=9E=E7=8E=B0SQL=E7=9A=84=
=E5=8A=9F=E8=83=BD=E3=80=82<BR><BR>9. =
=E5=85=B3=E4=BA=8E=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81=E7=9A=84=E8=A7=A3=E9=
=87=8A<BR>&nbsp;&nbsp;&nbsp;=20
      =
=E5=9C=A8Hibernate=E4=B8=ADsession=E5=AE=8C=E6=88=90=E6=8C=81=E4=B9=85=E5=
=8C=96=E6=93=8D=E4=BD=9C=EF=BC=8C=E8=A6=81=E5=88=9B=E5=BB=BA=E4=B8=80=E4=B8=
=AASession=E5=AE=9E=E4=BE=8B=E5=A4=A7=E8=87=B4=E9=9C=80=E8=A6=813=E4=B8=AA=
=E6=AD=A5=E9=AA=A4=EF=BC=9A<BR>&nbsp;&nbsp;&nbsp; A.=20
      =
=E5=88=9D=E5=A7=8B=E5=8C=96Hibernate=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86=E7=
=B1=BBConfiguration<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
      =
//=E8=AF=BB=E5=85=A5=E9=BB=98=E8=AE=A4=E7=9A=84=E9=85=8D=E7=BD=AE=E6=96=87=
=E4=BB=B6(hibernate.cfg.xml =E6=88=96=20
      =
hibernate.properties)=E6=9D=A5=E5=88=9B=E5=BB=BA=E4=B8=80=E4=B8=AAConfigu=
ration<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      Configuration config =3D new=20
      Configuration().configure();&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; B.=20
      =
=E9=80=9A=E8=BF=87Configuration=E7=B1=BB=E7=9A=84=E5=AE=9E=E4=BE=8B=E6=9D=
=A5=E5=88=9B=E5=BB=BA Session =E7=9A=84=E5=B7=A5=E5=8E=82=E7=B1=BB=20
      =
SessionFactory=EF=BC=9A<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      SessionFactory sessionFactory =3D=20
      config.buildSessionFactory();<BR><BR>&nbsp;&nbsp;&nbsp; C.=20
      =
=E9=80=9A=E8=BF=87SessionFactory=E5=BE=97=E5=88=B0Session=E5=AE=9E=E4=BE=8B=
=EF=BC=9A<BR>&nbsp;&nbsp;=20
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session =3D=20
      sessionFactory.openSession();<BR><BR>&nbsp;&nbsp;&nbsp; D.=20
      =
=E9=80=9A=E8=BF=87Session=E5=AE=9E=E4=BE=8B=E5=AE=8C=E6=88=90=E6=8C=81=E4=
=B9=85=E5=8C=96=E6=93=8D=E4=BD=9C=EF=BC=9A<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
//=E5=90=AF=E5=8A=A8=E4=BA=8B=E5=8A=A1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran=20
      =3D=20
      =
session.beginTransaction();<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      KelaStudent kelaStudent =3D new=20
      =
KelaStudent();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -