1. 程式人生 > >spring+hibernate初探(電影查詢專案)

spring+hibernate初探(電影查詢專案)

一、spring框架簡介

Spring是一個開放原始碼的設計層面框架,他解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向介面的程式設計思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson建立。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。

二、spring配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com"/>

    <bean name="student" class="com.ly.javabean.Student">
        <property name="className" value="3年5班"/>
    </bean>
    <bean name="student8" class="com.ly.javabean.Student">
        <property name="className" value="3年4班"/>
    </bean>
    <!-- <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <property name=""
     </bean>-->

    <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
    </bean>

    <!--<context:component-scan base-package="com" />-->
    <bean name="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean name="dao" class="com.ly.dao.daoImpl.SysDaoImpl">
        <property name="hibernateTemplate" ref="hibernateTemplate"/>
    </bean>


</beans>

context:component-scan:使用構造型(stereotype)註解所標註的類,如@Component(元件),@Service(服務),@Controller(控制器),@Repository(資料倉庫)。

三、spring簡單使用

@RunWith(SpringJUnit4ClassRunner.class)
@Component
public class SpringTest {

    @Autowired
    private Sysdao dao;


    @Test
    public void demo1(){
        /*ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Sysdao dao = applicationContext.getBean("dao",Sysdao.class);*/

        List apkInfo = dao.find("from ApkInfo", null);

        System.out.println(Arrays.toString(apkInfo.toArray()));
    }
}

由於有了spring的管理,物件的獲取可以直接有spring管理,不用直接new一個物件。這裡可以使用配置檔案的格式獲取,也就是上述註釋的部分來獲取一個物件,也可使用註解的方式獲取,但是在配置檔案中必須加上context:component-scan才可使用。

四、log4j

可引入log4j來記錄日誌。

# Global logging configuration 開發時候建議使用 debug
log4j.rootLogger=info, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS}%5p [%t] - %m%n

五、controller、service、dao的搭建

 dao和service只是簡單的查詢,不在展示。

controller:

@WebServlet(name = "com.ly.controller.ShowViewServlet", urlPatterns = "/show/aa")

public class ShowViewServlet extends HttpServlet {

    private Logger log = LoggerFactory.getLogger(ShowViewServlet.class);

    public ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        Myservice service = (Myservice) context.getBean("myserviceImpl");
        response.setContentType("text/html;charset=utf-8");
        String param = request.getParameter("param");
        param = "%" + param + "%";
        String hql = "select a from FilmBtsNew a where a.name like '" + param + "'";
        List list = service.find(hql);
        log.info("引數:{}", param);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("person", list);
        response.getWriter().print(jsonObject);

    }
}

結果如下:

現在只是簡單的將json資料上傳至web,下一步學習了簡單的前端就可以實現一個電影主頁了!