spring+springmvc+mybatis三个框架集成
开发工具以及运行环境:eclipse+jak1.8++tomcat7+mysql
第一步,数据库
CREATE TABLE `book` (
`id` int(11) DEFAULT NULL,
`name` varchar(192) DEFAULT NULL,
`price` float DEFAULT NULL,
`pic` varchar(96) DEFAULT NULL,
`description` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
第二步,搭建项目,导入包
demo的项目结构
第三步:创建spring.xml文件,sping-mvc.xml各种约束
第四步:开始着手初步代码构建。entity,mapper,service,serviceimpl层的代码就不展现了,重点在xml文件中
第五步:Spring和MyBatis集成 (重点在配置的配置)
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 读取本地数据配置文件 -->
<context:property-placeholder
location="db.properties" />
<bean name="dataSource"
class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
destroy-method="close">
<property name="driverClassName"
value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="${jdbc.maxActive}" />
</bean>
<!-- 第一步,创建sqlsessionfactory对象 -->
<bean name="sqlSessionFactoryBean"
class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 第二部,注入数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 第三步,配置包别名 -->
<property name="typeAliasesPackage" value="com.xiaoliu.entity"></property>
<!-- 第四步:引入mybatis的配置文件 如果需要的话,可以在这里配置mybatis配置文件,但是一般情况下,这个可以完全忽略 -->
<!-- <property name="configLocation" value="classpath:mybatis.config"></property> -->
<!-- 第七步配置映射文件 -->
<property name="mapperLocations" value="classpath:com/xiaoliu/mapper/*Mapper.xml"></property>
</bean>
<!-- 第五步:创建sqlsession对象。但是底层 sqlSessionFactoryBean已经创建,所以不用单独配置-->
<!-- 第六步:配置动态代理对象 这时候会用到mybatis-spring桥梁包 -->
<bean id="bookMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!-- 配置 sqlsession对象 但是同理底层也是sqlsessionfactory工厂创建-->
<property name="sqlSessionFactory" ref="sqlSessionFactoryBean" />
<!-- 配置需要被代理的对象 对应上面第七步-->
<property name="mapperInterface" value="com.xiaoliu.mapper.BookMapper"></property>
</bean>
<!-- 第八步配置事物管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 第九步配置service层 -->
<bean id="bookService"
class="com.xiaoliu.service.impl.BookServiceImpl">
<property name="mapper" ref="bookMapper"></property>
</bean>
<!-- 第九步 配置事物 事物通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="find*" read-only="true" />
<tx:method name="get*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="select*" read-only="true" />
<tx:method name="list*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<!-- 使用aop切事物 -->
<aop:config>
<!-- 配置切点 -->
<aop:pointcut expression="execution (* com.xiaoliu.service..*.**(..))" id="qiedian"/>
<!-- 配置切面 切面=通知+切点 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="qiedian"/>
</aop:config>
</beans>
备注:在配置service层的时候,引入dao的时候,如果有报这个错
Multiple annotations found at this line: - No setter found for property 'mapper' in class
因为这里我是用的属性注入,所以必须要有set方法,在service层加入service方法即可
第六步:新建测试类,测试一下
第七步:mybatis和springmvc集成
webxml
<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>SSM集成</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 第一步:配置前端总控制器 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 第三步 -读取spring配置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring*.xml</param-value>
</init-param>
<!-- 第四步 出事华容器 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 第二:指定url -->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
springmvc.xml
最后controller控制器代码
@Controller
public class BookController {
@Autowired
private BookService service;
@RequestMapping("bookList")
public String bookList(Model model) {
List<Book> all = service.getAll();
/*共享到前台*/
model.addAttribute("all",all);
return "book_list";
}
}
简单的实现了查的功能,总篇写下来,对ssm的掌握更加的熟悉了
代码在此直接点击:代码详细
代码我已经详细注释,如有错,可以指出,共同学习