版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39469809/article/details/79075774
框架篇:MyBatis+Spring+SpringMVC整合框架
准备工作:
1.安装并配置java运行环境
2.数据库的安装配置(Mysql)
3.安装并配置服务器(Tomcat)
4.Maven
5. IntelliJIDEA的安装配置(本人使用的主要软件是IntelliJIDEA,没使用eclipse什么的)
6. 使用IntelliJIDEA创建一个web app项目。
一:导包
由于我们创建的是maven的webapp项目,所以现在只需要配置pom.xml这个配置文件,系统会自动到maven的中央仓库去下载相应的包.
本人的pom.xml配置文件如下:
<dependencies> <!-- Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 整合MyBatis --> <!-- 引人MyBatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <!-- 引人MySQL依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version> </dependency> <!-- 整合spring 同时也包含了springmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.3.RELEASE</version> </dependency> <!-- C3p0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!-- spring和mybatis整合 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- jackson依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.30</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 引入Hibernate依赖 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version> </dependency> </dependencies> <build> <finalName>G160828_SSM01</finalName> <plugins> <plugin><!-- poi --> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>80</port> <path>/</path> </configuration> <version>2.2</version> </plugin> </plugins> <resources> <resource><!--加载java类中的xml配置文件--> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> </project>
配置后运行下maven,就会自动向中央仓库下载相应的包啦!
二: MyBatis搭建
项目的结构流程如下:
配置mybatis框架的配置:mybatis-config.xml
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <!-- xml映射 --> <mapper resource="com/entity/Person.xml"/> </mappers> </configuration>mybatis配置文件现在配置好了,然后我们来建实体类
Person实体类
package com.entity; import javax.persistence.*; import java.io.Serializable; public class Person { private int pid; private String pname; private int page; public Person() { } public Person(int pid, String pname, int page) { this.pid = pid; this.pname = pname; this.page = page; } public Person(String pname, int page) { this.pname = pname; this.page = page; } public int getPid() { return pid; } public void setPid(int pid) { this.pid = pid; } public String getPname() { return pname; } public void setPname(String pname) { this.pname = pname; } public int getPage() { return page; } public void setPage(int page) { this.page = page; }
@Override public String toString() { return "Person{" + "pid=" + pid + ", pname='" + pname + '\'' + ", page=" + page + '}'; }
}这时我们需要写映射文件来对数据进行sql语句操作了,但是我们需要先把Dao的接口写了。
PersonDao
package com.dao; import com.entity.Person; import java.util.List; public interface PersonDao {
//添加 public void add(Person person); //删除 public void delete(int pid); //修改 public void update(int pid,Person person); //查询单个 public Person getAlla(int pid); //查询多个 public List<Person> getPerson(String text); }
Person.xml映像文件配置如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dao.PersonDao"> <!-- 配置单个查询 --> <select id="getAlla" parameterType="int" resultType="com.entity.Person"> select * from person where pid=#{pid} </select> <!-- 根据list集合查询多个 --> <select id="getPerson" resultType="com.entity.Person"> select * from person </select> <!-- 配置添加 --> <select id="add" parameterType="com.entity.Person"> insert into person(pname,page) values(#{pname},#{page}); </select> <!-- 配置修改 --> <select id="update" parameterType="com.entity.Person" resultType="com.entity.Person"> update person set pname=#{pname},page=#{page} where pid=#{pid}; </select> <!-- 配置删除 --> <select id="delete" parameterType="int"> delete from person where pid=#{pid} </select> </mapper>
ok,前提工作都弄好了,现在我们在man下面创建一个test测试类,把它标记为:
然后我们写一个TestMyBatis的测试类
package com.test; public class TestMyBatis { @Test public void test() { try { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); SqlSession sqlSession = sqlSessionFactory.openSession(); PersonDao personDao = sqlSession.getMapper(PersonDao.class); //删除 personDao.delete(12); System.out.println(personDao.getDelete().size()); //提交 sqlSession.commit(); //关闭 sqlSession.close(); } catch (IOException e) { e.printStackTrace(); } } }
能够执行命令的话,就说明MyBatis框架已经搭建成功了!
MyBatis+Spring搭建:
需要用到c3p0,所以我们先建一个db.properties文件,配置如下
#连接名
uname=root
#密码
upass=123456
#路径
url=jdbc:mysql://localhost:3306/test
#连接驱动
driver_Class=com.mysql.jdbc.Driver
#初始化大小
initPoolSize = 3
#池子最大值
maxPoolSize = 20
接下来我们就创建一个spring的xml配置文件,applicationContext.xml(其实和ssh整合中的一样,不过其中的事物配置我们可以不需要配置了,其它的配置文件也不需要了,只需要这一个配置文件就可以了,是不是觉得少了很多代码呢?),之前的mybatis-config.xml配置文件中连接mysql的代码就可以不需要了,映射文件也不需要了。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.*"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!--加载db.properties--> <context:property-placeholder location="classpath:db.properties"></context:property-placeholder> <!--配置c3p0数据源--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 加载数据库连接池里面的键 --> <property name="user" value="${uname}"></property> <property name="password" value="${upass}"></property> <property name="jdbcUrl" value="${url}"></property> <property name="driverClass" value="${driver_Class}"></property> <property name="initialPoolSize" value="${initPoolSize}"></property> <property name="maxPoolSize" value="${maxPoolSize}"></property> </bean>
<!-- 配置事物 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mapperLocations" value="classpath:com/entity/*.xml"></property> </bean>
<bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.dao"></property> </bean> </beans>
ok,配置文件已经弄好了,下面我们来对它进行测试,在测试文件下中创建一个TestSpring的测试类:
package com.test; public class TestSpring { @Test public void test(){ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); PersonDao personDao= (PersonDao) applicationContext.getBean("personDao"); System.out.println(personDao.getDelete().size()); personDao.delete(11); } }
如果出现了数据的话,那就说明mybatis+spring的结合已经完成!
最后:MyBatis+Spring+SpringMVC搭建
要先在java下面创建一个controller类
然后在创建Springmvc的配置文件(直接创建file,头部需自己写):springmvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--配置扫描器--> <context:component-scan base-package="com.*" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>
<!--配置注解解析器 别忘记了,有可能在转jackson时会报406的错误 得不到值--> <context:component-scan base-package="com.controller"></context:component-scan>< mvc :annotation-driven > < mvc :message-converters > < bean class ="org.springframework.http.converter.StringHttpMessageConverter" /> < bean class ="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> </ mvc :message-converters > </ mvc :annotation-driven > <!--视图解析器--> < bean id ="viewResolver" class ="org.springframework.web.servlet.view.InternalResourceViewResolver" > <!--前缀--> < property name ="prefix" value ="/" ></ property > <!--后缀--> < property name ="suffix" value =".jsp" ></ property > </ bean > </ beans >
接下来我们配置web.xml了:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
然后我们在controller包下建类,实现springmvc的业务方法
package com.controller; import com.alibaba.fastjson.JSONObject; import com.biz.PersonBiz; import com.entity.Person; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.List; @Controller public class PersonController {
@Autowired
private
PersonDao
personDao;
//添加 @RequestMapping("add.do") public void add(HttpServletRequest request, HttpServletResponse response,String pname,int page) throws IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); pname = new String(pname.getBytes("ISO-8859-1"), "utf-8"); // page = new String(page.getBytes("ISO-8859-1"),"utf-8"); System.out.println(pname); System.out.println(page); Person person = new Person(); person.setPname(pname); person.setPage(page); personDao.add(person); } //修改 @RequestMapping("update.do") @ResponseBody public void update(HttpServletRequest request, HttpServletResponse response,Person person) { try { System.out.println("进入修改"); request.setCharacterEncoding("utf-8"); response.setContentType("textml;charset=utf-8"); System.out.println("名字:" + person.getPname()); System.out.println("名字:" + person.getPage()); person.setPname(new String(person.getPname().getBytes("ISO-8859-1"), "utf-8")); System.out.println("改了:" + person.getPname()); System.out.println("改了:" + person.getPage()); PrintWriter out = response.getWriter(); personDao.update(person.getPid(), person); out.write("1"); out.close(); } catch (Exception e) { e.printStackTrace(); } } //删除 @RequestMapping("delete.do") @ResponseBody public JSONObject delete(HttpServletRequest request, HttpServletResponse response) throws IOException { JSONObject object = new JSONObject(); String pid = request.getParameter("pid"); System.out.println(pid); try { personDao.delete(Integer.parseInt(pid)); object.put("sucess","sucess"); }catch (Exception e){ object.put("sucess","faile"); } return object; } //查询 @RequestMapping(value = "search.do") @ResponseBody public Object test (HttpServletRequest request, HttpServletResponse response, String text) throws IOException { System.out.println("小仙女进来了" + text); if (text == null) { text = ""; } List<Person> li = personDao.getPerson(text); return li; } }
好了!到了最后一步了,在页面中把值绑定出来
先在webapp下面建一个jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page isELIgnored="false" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" href="bootstrap/css/bootstrap.addtabs.css" type="text/css" media="screen"/> <script src="bootstrap/js/jquery-3.1.1.min.js"></script> <script src="bootstrap/js/bootstrap.min.js"></script> <script src="bootstrap/js/bootstrap.addtabs.js"></script>
</head> <body onload="sousuo()"> <div class="container-fluid" > <div class="row clearfix"> <div class="col-md-12 column"> <div class="table-responsive"> <table class="table table-bordered table-condensed"> <thead> <div class="btn-toolbar col-md-12 column" role="toolbar"> </div>
</div>
</div>
</div>< script type= "text/javascript" > //搜索/查询 function sousuo(){ var type=$( "#type"). val(); var content=$( "#content"). val(); var url= "search.do?type="+ type+ "&content="+ content; $. getJSON( url, function (data) { $( "#body").html( ""); for( var i= 0; i<data. length; i++){ var tr= "<tr><td><input type='checkbox' name='TTT'>"+data[ i]. pid+ "</td>" + "<td>"+data[ i]. pname+ "</td>" + "<td>"+data[ i]. page+ "</td>" + "<td><input type='button' value='新增' style='background:white;' onclick=' locationAdd ()'/><input type='button' value='删除' style='background:white;' onclick=' del ("+data[ i]. pid+ ")'" + "/><input type='button' value='修改' style='background:white;' onclick=' locationUpdate ("+data[ i]. pid+ ")'/></td>" + "</tr>"; $( "#body"). append( tr); } }); }
</script> </body> </html>
得到结果如下则说明全部的整合就完成了,继续写你自己需要的操作吧!