100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)

primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)

时间:2024-05-22 18:17:27

相关推荐

primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)

primefaces

在这一部分中,我将继续演示JSF,Guice和MyBatis的集成。 在持久层中使用DBCP连接池和MYSQL数据库。 看一下第1部分 。

在上一篇文章中 ,我们创建了一个ServletContextListener。 现在,我们只需要在contextInitialized方法中绑定BasicDataSourceProvider和JdbcTransactionFactory。

GuiceContextListener.java

package org.borislam;import java.util.Properties;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;import org.apache.log4j.xml.DOMConfigurator;import org.borislam.mapper.StaffMapper;import org.borislam.service.SimpleService;import org.borislam.service.impl.SimpleServiceImpl;import org.mybatis.guice.MyBatisModule;import org.mybatis.guice.datasource.dbcp.BasicDataSourceProvider;import org.mybatis.guice.datasource.helper.JdbcHelper;import com.google.inject.Guice;import com.google.inject.Injector;import com.google.inject.Singleton;import com.google.inject.name.Names;public class GuiceContextListener implements ServletContextListener {public void contextDestroyed(ServletContextEvent servletContextEvent) {ServletContext servletContext = servletContextEvent.getServletContext();servletContext.removeAttribute(Injector.class.getName());}public void contextInitialized(ServletContextEvent servletContextEvent) {Injector injector = Guice.createInjector(new MyBatisModule() {@Overrideprotected void initialize() { install(JdbcHelper.MySQL);environmentId('development');bindDataSourceProviderType(BasicDataSourceProvider.class);bindTransactionFactoryType(JdbcTransactionFactory.class);Names.bindProperties(binder(), createServerProperties());//add singleton service classbind(SimpleService.class).to(SimpleServiceImpl.class).in(Singleton.class); //add MyBatis Service classaddMapperClass(StaffMapper.class);}});ServletContext servletContext = servletContextEvent.getServletContext();servletContext.setAttribute(Injector.class.getName(), injector);//log4JDOMConfigurator.configure(Thread.currentThread().getContextClassLoader().getResource('log4j.xml'));}protected static Properties createServerProperties() {Properties myBatisProperties = new Properties();myBatisProperties.setProperty('JDBC.host', 'localhost');myBatisProperties.setProperty('JDBC.port', '3306');myBatisProperties.setProperty('JDBC.schema', 'ttcoach');myBatisProperties.setProperty('JDBC.username', 'root');myBatisProperties.setProperty('JDBC.password', '');myBatisProperties.setProperty('JDBC.autoCommit', 'false');return myBatisProperties;}}

Staff.java

package org.borislam.model;public class Staff {private String code;private String name;private String sex;private String tel;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;} }

StaffMapper.java

package org.borislam.mapper;import java.util.List;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select;import org.borislam.model.Staff;public interface StaffMapper {final String SELECT_ALL = 'SELECT * FROM FREELANCER';final String SELECT_BY_CODE = 'SELECT * FROM FREELANCER WHERE CODE = #{code}';/*** Returns the list of all Freelancer instances from the database.* @return the list of all Freelancer instances from the database.*/@Select(SELECT_ALL)@Results(value = {@Result(property='code', column='code'),@Result(property='name', column='name'),@Result(property='sex', column='sex'),@Result(property='tel', column='tel')})List<Staff> selectAll();/*** Returns a Freelancer instance from the database.* @param id primary key value used for lookup.* @return A Freelancer instance with a primary key value equals to pk. null if there is no matching row.*/@Select(SELECT_BY_CODE)@Results(value = {@Result(property='code', column='code'),@Result(property='name', column='name'),@Result(property='sex', column='sex'),@Result(property='tel', column='tel')})Staff selectByCode(String code);}

SimpleService.java

package org.borislam.service;public interface SimpleService {public void doSimpleThing();}

SimpleServiceImpl.java

package org.borislam.service.impl;import java.util.List;import org.borislam.mapper.StaffMapper;import org.borislam.model.Staff;import org.borislam.service.SimpleService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.google.inject.Inject;public class SimpleServiceImpl implements SimpleService {private StaffMapper staffMapper;Logger logger = LoggerFactory.getLogger(this.getClass());@Injectpublic void setStaffMapper(StaffMapper staffMapper) {this.staffMapper = staffMapper;}public void doSimpleThing() {List<Staff> staffList = staffMapper.selectAll();logger.debug('size 1: ' + staffList.size());Staff staff = staffMapper.selectByCode('c001');logger.debug('Code1 : ' + staff.getCode());logger.debug('Name 1: ' + staff.getName());;}}

TestBean.java

package org.borislam.view;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;import javax.inject.Inject;import org.borislam.service.SimpleService;import org.borislam.service.TestService;@ManagedBean@SessionScopedpublic class TestBean extends BasePageBean {private SimpleService sService;@Injectpublic void setsService(SimpleService sService) {this.sService = sService;}public String doTest(){System.out.println('test 1 inside backing bean...');sService.doSimpleThing();return '';}public String doTest2(){System.out.println('test 2 inside backing bean...');sService.doSimpleThing();return '';}}

index.xhtml

<html xmlns='/1999/xhtml'xmlns:h='/jsf/html'xmlns:p='/ui'><h:head><style>.ui-widget, .ui-widget .ui-widget {font-size: 80% !important;}</style></h:head><h:body><h:form><h:outputText value='#{msg['website.title']}' /><p:calendar id='popupButtonCal' showOn='button' /><p:commandButton value='TEST2' action='#{testBean.doTest}'/><p:editor/><br/></h:form></h:body></html>

大功告成! 现在,您可以准备基于此框架编写JSF应用程序。

参考:轻量级Web应用程序框架: Programming Peaceally博客中的JCG合作伙伴 Boris Lam的PrimeFaces(JSF)+ Guice + MyBatis(PART 2) 。

翻译自: //01/lightweight-web-application-framework-primefaces-jsf-guice-mybatis-part-2.html

primefaces

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。