将Spring和myBatis进行整合,从而使用Spring依赖注入以减少代码的耦合,使用SpringMVC处理请求并作出响应。使用myBatis更加简捷地完成数据库操作。
第一步:使用Maven搭建项目,并在pom.xml中导入SSM需要使用到的依赖包
<!--引入Junit单元测试依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
<!--导入Servlet依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0</version> <scope>provided</scope> </dependency> <!-- 引入JSTL标签类依赖 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
<!-- 引入MySQL数据库依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version> </dependency> <!-- 引入数据库连接技术C3P0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- 引入MyBatis框架依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency>
<!-- 引入Spring框架依赖 --> <!--SpringMVC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.10.RELEASE</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!--MyBatis和Spring整合--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> |
加载XML代码:
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> |
第二步:在项目中创建包
com.zking.controller com.zking.dao com.zking.mapping com.zking.pojo com.zking.service com.zking.service.impl |
第三步:在resources中创建db.properties
#定义数据库驱动 driverClass=com.mysql.jdbc.Driver jdbcurl=jdbc:mysql://127.0.0.1:3306/db_abc uname=root upwd=root
#定义初始连接数 initialPoolSize=0
#定义最大连接数 maxPoolSize=20
#定义最大空闲 maxIdle=20
#定义最小空闲 minIdle=1
#定义最长等待时间 maxWait=60000 |
第四步:在resources中创建spring.xml
// xmlns:xsi // xmlns:aop // xmlns:tx // xmlns:context // xmlns:mvc
<!--自动扫描:扫描com.zking包下所有类中的注解--> <context:component-scan base-package="com.zking" />
<!--引入db.properties--> <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
<!--配置数据源:C3P0--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${driverClass}"></property> <property name="jdbcUrl" value="${jdbcUrl}"></property> <property name="user" value="${uname}"></property> <property name="password" value="${upwd}"></property> <property name="initialPoolSize" value="${initialPoolSize}"></property> <property name="maxPoolSize" value="${maxPoolSize}"></property> </bean>
<!--配置SqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--引入数据源--> <property name="dataSource" ref="dataSource"></property> <!--加载所有映射文件--> <property name="mapperLocations" value="classpath:com/zking/mapping/*.xml"></property> <!--typeAliasesPackage对应实体类所在的包,这个时候会自动取包名作为别名--> <property name="typeAliasesPackage" value="com.zking.pojo"></property> </bean>
<!--配置Dao层:spring注入这个bean--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--将sqlSessionFactory注入com.zking.dao包的类中,dao包中的类直接使用sqlSessionFactory--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> <property name="basePackage" value="com.zking.dao"></property> </bean>
<!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> |
第五步:在com.pojo包中创建实体类
注解 public class User implements Serializable { private Integer uid; private String user_name; private String pass_word; private Integer age; //省略构造方法及set/get方法 } |
第六步:在dao包中创建接口,编写方法
public interface IUserDao { public int addUser(User user); } |
第七步:在mapping包中创建实体类的Mapper文件:UserMapper.xml
<mapper namespace="com.zking.dao.IUserDao"> <insert id="addUser" parameterType="User"> INSERT INTO tb_user(uid,user_name,pass_word,age) values(#{uid},#{user_name},#{pass_word},#{age}); </insert> <!--省略其它操作--> </mapper> |
第八步:在service中创建接口,在impl包中创建接口的实现类
IUserService接口:
public interface IUserService { public int addUser(User user); } |
UserServiceImpl实现类:
public class UserServiceImpl implements IUserService { @Resource private IUserDao iUserDao; //引用dao包中的接口,实现是通过dao包的调用具体的实现方法 public int addUser(User user) { return iUserDao.addUser(user); } } |
第九步:配置web.xml
<!--设置默认访问(可选)--> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
<!-- 项目上下文中加载spring.xml --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param>
<!-- Spring配置监听:作用是在web容器自动运行时加载Spring的相关配置文件,完成类的初始化工作 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
<!-- SpringMVC配置 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springfreamework.web.servlet.DispatcherServlet</servlet-class> <!--springmvc上下文中加载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> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
<!-- 编码配置(可选)--> <filter> <filter-name>encode</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>encode</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
第十步:添加login.jsp
<form action="/add" method="post">
<input type="hidden" name="addid" />
用户名:<input type="text" name="username" /><br/>
密 码:<input type="text" name="password" /><br/>
地 址:<input type="text" name="address" /><br/>
<input type="submit" value="提交" />
</form>
第十一步:编写Controller文件
@Controller
public class UserController{
@Resource
private IUserService iUserService;
//添加
@RequestMapper("add")
public String add(User user){
int n = iUserService.add(user);
if(n>0){
return "show.jsp";
}else{
return "add.jsp";
}
}
……
}