您的位置:首页 > 编程语言 > Java开发

简单配置spring+springmvc+mybatis之整合

2017-04-29 12:14 465 查看
三大框架整合并没有想象中的那么难,只要足够细心,简单的把它配置出来还是不难,难的是继续深入理解,作为菜鸟的我还停留在想的阶段,由于涉世未深,望各位大神能指点一二。

-1、 三大框架整合,首先把需要的jar包准备齐全,在此不再啰嗦。

2、在数据库中创建一张实验表



3、基本环境配置



具体类如下

@Controller
/*@Transactional*/
public class InsertUserinfo extends BaseAction{
@RequestMapping("/insertUserinfo")
public String insertUserinfo(String username){
System.out.println("into insertUserinfo controller");
System.out.println(username);
this.getAllService().getUSerinfoService().insertUserinfo("小白", "菜鸟", 12);
return "index.jsp";

}


@Controller
public class BaseAction {
@Autowired
private AllService allService;
public AllService getAllService(){
System.out.println("allService.hashCode" +allService.hashCode());
return allService;
}
}


@Service
public class UserinfoService {
@Autowired
private AllDao allDao;
public void insertUserinfo(String username,String password,int age){
System.out.println("allDao.hashCode=" +allDao.hashCode());
Userifo userinfo=new Userifo();
userinfo.setUsernaem(username);
userinfo.setPassword(password);
allDao.getUserinfoDao().insertUserInfo(userinfo);
}
public Userifo serectuserbyid(int i) {
return allDao.getUserinfoDao().selectuserbyid(i);
}
}


@Service
public class AllService {
@Autowired
private UserinfoService userinfoService;
public UserinfoService getUSerinfoService(){
System.out.println("userinfoService.hashCode="+ userinfoService.hashCode());
return userinfoService;
}
}


@Repository
public class UserinfoDao {
@Autowired
private UserifoMapper userInfoMapper;

public void insertUserInfo(Userifo userinfo){
System.out.println("userinfoMapper.hashCode=" +userInfoMapper.hashCode());
userInfoMapper.insert(userinfo);
}
public Userifo selectuserbyid(int id){
return userInfoMapper.selectByPrimaryKey(id);
}
}


@Repository
public class AllDao {
@Autowired
private UserinfoDao userinfoDao;
public UserinfoDao getUserinfoDao(){
System.out.println("userinfoDao.hashCode=" +userinfoDao.hashCode());
return userinfoDao;
}
}


到此为止所有的基本代码已经写完,包ssm.orm中的东西是通过逆向工厂生成的,所以在此就不把代码贴出来了。捋一下思路,我是在controller层进行CURD操作的时候,需要向下一级service层提出请求,然后service层将请求提交给dao层,dao层通过mapper去操作数据库。也就有了如下关系



接下来写配置文件

从web.xml配起

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name></display-name>
<filter>
<filter-name>charFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.spring</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file<
d57e
/span>>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>


springmvc配置文件

<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <context:component-scan base-package="controller"></context:component-scan>
<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

<!-- 注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!-- 注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>
</beans>


mybatis配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>
<!-- 因为在连接数据库等信息在spring4配置文件中定义,所以在此配置的代码极少,
但要保持一些MyBatis的默认行为,还是可以在此文件中进行配置 -->


applicationContext.xml

<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- 加载java的配置文件 -->

<!-- 进行包扫描,将dao和service包中的内容进行注入,注入方式是使用的注解 -->
<context:component-scan base-package="ssm.dao"></context:component-scan>
<context:component-scan base-package="ssm.service"></context:component-scan>
<!-- 创建数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/day06" />
<property name="username" value="root" />
<property name="password" value="root" />
<!--        <property name="maxActive" value="10" />
<property name="maxIdle" value="5" />            -->
</bean>

<!-- 将数据源注入到seqSessionFactoryBean对象中 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>

<!-- 将sqlSessionFactory对象注入UserinfoMapper.java接口的代理实现类中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="ssm.orm"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>

<!-- 将dataSource对象关联到事务功能 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>

</beans>


这样整个就配完成了。

测试

结果略。


总结:框架整合给本人的感觉和单独配置springmvc,mybatis的时候没多大的区别,不过配置完成后这种层次感让人感觉到非常清晰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  框架