spring+springMVC+myBatis——小案例
通過SSM框架簡單的實現一個對學生類的增刪改查
一、主要步驟
1.建立名為showstudents的Web專案,匯入相應的jar包
2.在包下建立實體類Student
3.dao層建立StudentDAO,建立StudentDAO.xml
4.配置檔案log4j.properties,spring.xml
5.建立檔案sqlMapConfig.xml
6.配置web.xml
7.檢視層
二、詳細流程
建立web專案工程之後,在WEB-INF下的lib資料夾下匯入相應的jar包。
1.log4j.properties日誌檔案
log4j.debug=true log4j.rootLogger=DEBUG,CON log4j.appender.CON=org.apache.log4j.ConsoleAppender log4j.appender.CON.layout=org.apache.log4j.PatternLayout log4j.appender.CON.layout.ConversionPattern=%d{MM-ddHH\:mm\:ss}[%c-%L][%t][%-4r] - %m%n
2.web.xml中配置spring
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <!-- 配置spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <!-- 配置spring容器啟動監聽器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3.spring.xml中
配置資料庫連線池
注意:要根據自己的資料庫修改相應的url、username、password
<!-- Druid 資料庫連線池 --> <!-- mybatis要依賴資料庫連線池的bean,所以id要對應 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本屬性 url、user、password name屬性要和類裡的屬性對應--> <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe" /> <property name="username" value="scott" /> <property name="password" value="tiger" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /><!-- 最初的資料庫連線,預設是1 --> <property name="minIdle" value="1" /><!-- 空閒時保留的最小連線數1 --> <property name="maxActive" value="20" /><!-- 最大活動連線數20 --> </bean>
配置mybatis的會話工廠
<!-- 建立SqlSessionFactory,同時指定資料來源 配置mybatis的會話工廠-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" /> <!-- ref是引用 ,ref中的dataSource是引用的配置資料庫連線池,dataSource是資料庫連線池的id-->
<!-- 指定sqlMapConfig總配置檔案,訂製的environment在spring容器中不在生效 在這裡指定mybatis的總的配置檔案-->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
</bean>
配置會話模板類,注入到StudentDAO中
------引用資料庫連線池,獲取資料庫連線
------指定mybatis總的配置檔案位置和名稱
------配置會話模板類,注入到StudentDAO類中
<!-- 配置怎樣生成一個會話,配置會話模板類,注入到StudentDAO類中 -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- constructor-arg index="0" ref="sqlSessionFactory"第一個引數,引用sqlSessionFactory會話工廠物件 -->
<!-- 得到DAO物件, StudentDAO就可以直接執行sql語句-->
<bean id="studentDAO" class="com.sict.dao.StudentDAO">
<property name="sqlSession" ref="sqlSessionTemplate" />
</bean>
看一下完整的spring.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
>
<!-- Druid 資料庫連線池 -->
<!-- mybatis要依賴資料庫連線池的bean,所以id要對應 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本屬性 url、user、password name屬性要和類裡的屬性對應-->
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" /><!-- 最初的資料庫連線,預設是1 -->
<property name="minIdle" value="1" /><!-- 空閒時保留的最小連線數1 -->
<property name="maxActive" value="20" /><!-- 最大活動連線數20 -->
</bean>
<!-- 建立SqlSessionFactory,同時指定資料來源 配置mybatis的會話工廠-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" /> <!-- ref是引用 ,ref中的dataSource是引用的配置資料庫連線池,dataSource是資料庫連線池的id-->
<!-- 指定sqlMapConfig總配置檔案,訂製的environment在spring容器中不在生效 在這裡指定mybatis的總的配置檔案-->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
</bean>
<!-- 配置怎樣生成一個會話,配置會話模板類,注入到StudentDAO類中 -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- constructor-arg index="0" ref="sqlSessionFactory"第一個引數,引用sqlSessionFactory會話工廠物件 -->
<!-- 得到DAO物件, StudentDAO就可以直接執行sql語句-->
<bean id="studentDAO" class="com.sict.dao.StudentDAO">
<property name="sqlSession" ref="sqlSessionTemplate" />
</bean>
</beans>
4.配置sqlMapConfig.xml
sqlMapConfig.xml是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>
<settings>
<!-- 這個配置使全域性的對映器啟用或禁用快取 -->
<setting name="cacheEnabled" value="true" />
<!-- 允許 JDBC 支援生成的鍵。需要適合的驅動。如果設定為 true 則這個設定強制生成的鍵被使用,儘管一些驅動拒絕相容但仍然有效(比如 Derby) -->
<setting name="useGeneratedKeys" value="true" />
<!-- 配置預設的執行器。SIMPLE 執行器沒有什麼特別之處。REUSE 執行器重用預處理語句。BATCH 執行器重用語句和批量更新 -->
<setting name="defaultExecutorType" value="REUSE" />
<!-- 全域性啟用或禁用延遲載入。當禁用時,所有關聯物件都會即時載入。 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 設定超時時間,它決定驅動等待一個數據庫響應的時間。 -->
<setting name="defaultStatementTimeout" value="25000"/>
</settings>
<!-- 為實體類配置別名,這樣在StudentDAO.xml中可通過別名來代替類名,簡化書寫 -->
<typeAliases>
<typeAlias type="com.sict.model.Student" alias="Student" />
</typeAliases>
<!-- 指定對映器的路徑 引入配置檔案 -->
<mappers>
<mapper resource="com/sict/dao/StudentDAO.xml"/>
</mappers>
</configuration>
這樣基本的配置檔案配置好後,就可以寫實現相應的增刪改查功能了。
1.model中寫相應的實體類
public class Student {
private Integer id;
private String stuNo;
private String name;
private String mobilePhone;
private String homePhone;
private String email;
private String QQ;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobilePhone() {
return mobilePhone;
}
public void setMobilePhone(String mobilePhone) {
this.mobilePhone = mobilePhone;
}
public String getHomePhone() {
return homePhone;
}
public void setHomePhone(String homePhone) {
this.homePhone = homePhone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQQ() {
return QQ;
}
public void setQQ(String qQ) {
QQ = qQ;
}
@Override
public String toString() {
return "Student [id=" + id + ", stuNo=" + stuNo + ", name=" + name
+ ", mobilePhone=" + mobilePhone + ", homePhone=" + homePhone
+ ", email=" + email + ", QQ=" + QQ + "]";
}
}
2.StudentDAO.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">
<!-- namespace是名稱空間,resultMap是結果對映,
resultMap中的property是實體類中類的屬性(大小寫必須規範),column是資料庫中表的欄位(並不區分大小寫) -->
<mapper namespace="com.sict.dao.StudentMapper">
<resultMap id="StudentResult" type="Student">
<id property="id" column="id" />
<result property="stuNo" column="s_no" />
<result property="name" column="s_name" />
<result property="mobilePhone" column="m_phone" />
<result property="homePhone" column="h_phone" />
<result property="email" column="email" />
<result property="QQ" column="qq" />
</resultMap>
<!--以下是增刪查改的sql語句-->
<select id="selectAllStudents" resultMap="StudentResult">
<![CDATA[SELECT id,s_no,s_name,m_phone,h_phone,email,qq FROM students]]>
</select>
<select id="searchAllStudents" parameterType="string" resultMap="StudentResult">
<![CDATA[
SELECT id,s_no,s_name,m_phone,h_phone,email,qq FROM students
WHERE s_no like #{keyWord} OR
s_name like #{keyWord} OR
m_phone like #{keyWord} OR
h_phone like #{keyWord} OR
email like #{keyWord} OR
qq like #{keyWord}
]]>
</select>
<select id="selectStudentById" parameterType="int" resultMap="StudentResult">
<![CDATA[SELECT id,s_no,s_name,m_phone,h_phone,email,qq FROM students WHERE id = #{id}]]>
</select>
<select id="selectCount" resultType="int">
<![CDATA[SELECT count(*) c FROM students]]>
</select>
<delete id="deleteStudent" parameterType="int">
<![CDATA[
DELETE FROM students WHERE id = #{id}
]]>
</delete>
<insert id="insertStudent" parameterType="Student">
<![CDATA[
INSERT INTO students values(students_seq.NEXTVAL,#{stuNo},#{name},#{mobilePhone},#{homePhone},#{email},#{QQ},sysdate)
]]>
</insert>
<update id="updateStudent" parameterType="Student">
<![CDATA[
UPDATE students SET
s_no = #{stuNo},
s_name = #{name},
m_phone = #{mobilePhone},
h_phone = #{homePhone},
email = #{email},
qq = #{QQ},
birthdate = sysdate
WHERE id = #{id}
]]>
</update>
</mapper>
3.StudentDAO.java
import java.util.ArrayList;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import com.sict.model.Student;
public class StudentDAO {
//得到會話模板
private SqlSessionTemplate sqlSession;
//建構函式
public StudentDAO(){
}
public SqlSessionTemplate getSqlSession() {
return sqlSession;
}
public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
}
//學生的個數
public int getCount(){
Integer c = (Integer)sqlSession.selectOne("com.sict.dao.StudentMapper.selectCount");
return c.intValue();
}
//通過id查詢獲取學生
public Student getStudent(int id){
return (Student)sqlSession.selectOne("com.sict.dao.StudentMapper.selectStudentById",id);
}
//獲取所有學生
public List<Student> getStudents(){
List<Object> stus = sqlSession.selectList("com.sict.dao.StudentMapper.selectAllStudents");
List<Student> li = new ArrayList<Student>();
for(Object s : stus){
li.add((Student)s);
}
return li;
}
//新增學生
public int insertStudent(Student s){
return sqlSession.insert("com.sict.dao.StudentMapper.insertStudent",s);
}
//通過id刪除學生
public int deleteStudent(int id){
return sqlSession.delete("com.sict.dao.StudentMapper.deleteStudent",new Integer(id));
}
//修改學生資訊
public int updateStudent(Student s){
return sqlSession.insert("com.sict.dao.StudentMapper.updateStudent",s);
}
//模糊查詢,通過關鍵字查詢學生
public List<Student> searchStudents(String keyWord){
List<Student> li = new ArrayList<Student>();
keyWord = "%"+keyWord+"%";
List<Object> stus = sqlSession.selectList("com.sict.dao.StudentMapper.searchAllStudents",keyWord);
for(Object s : stus){
li.add((Student)s);
}
return li;
}
}
檢視index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.sict.model.*"%>
<%@ page import="com.sict.dao.*"%>
<%@ page import="org.springframework.web.context.*"%>
<%@ page import="org.springframework.web.context.support.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
ServletContext servletContext = request.getSession()
.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils
.getWebApplicationContext(servletContext);
StudentDAO dao = (StudentDAO) wac.getBean("studentDAO");
%>
刪除email為[email protected]的學生:
<br>
<%
List<Student> stus = dao.searchStudents("[email protected]");
for (Student s : stus) {
out.println("刪除---:"+s + "<br>");
dao.deleteStudent(s.getId());
}
%>
新增學生[email protected]:
<br>
<%
Student sNew = new Student();
sNew.setEmail("[email protected]");
sNew.setName("new");
sNew.setStuNo("999");
sNew.setQQ("0000");
sNew.setHomePhone("053133334444");
sNew.setMobilePhone("053133334444");
dao.insertStudent(sNew);
%>
獲取所有學生:
<br>
<%
stus = dao.getStudents();
for (Student s : stus) {
out.println(s + "<br>");
}
%>
獲取i學生總數:
<br>
<%
out.println(dao.getCount() + "<br>");
%>
獲取id為0的學生:
<br>
<%
out.println(dao.getStudent(0) + "<br>");
%>
查詢含郭字的學生:
<br>
<%
stus = dao.searchStudents("郭");
for (Student s : stus) {
out.println(s + "<br>");
}
%>
</body>
</html>
相關推薦
spring+springMVC+myBatis——小案例
通過SSM框架簡單的實現一個對學生類的增刪改查 一、主要步驟 1.建立名為showstudents的Web專案,匯入相應的jar包 2.在包下建立實體類Student 3.dao層建立StudentDAO,建立StudentDAO.xml 4.配置檔案log4j.prope
spring+springMvc+Mybatis簡單案例超詳細
上一篇文章介紹了spring+springMvc+Mybatis的搭建,地址https://blog.csdn.net/niqinge/article/details/79280204現在來仔細介紹一個簡單的案例。在搭建完ssm框架之後,不懂搭建的朋友可以先看看我的上一篇文章
小練習:Spring + SpringMVC + Mybatis 整合
注:將涉及的類(包、模組)交給Spring容器管理後,可在開發過程中注入需要的東西,通過Spring容器的管理,避免了各種類及其屬性的額外宣告使用,簡化開發流程 web.xml中,可以通過<context-param>批量把各種xml裡配置好的Bean一起載入到Spring容器中
spring+springmvc+mybatis+jQuery easyUI案例
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/cor
Spring+SpringMVc+Mybatis實現數據庫查詢
java代碼 格式 jdb web.xml配置 set ransac load idle name 大家好,本篇博客小Y將會給大家帶來一篇SSM框架實現數據查詢的Demo,使用的數據庫是Mysql,Server是TomCat.現在的SSM整合非常流行,因為springm
整合 Spring + SpringMVC + MyBatis
provide star 實現 per ng- 獲取自增 check fas manage < 一 > POM 配置文件 ( 如果出現 JAR 包 引入錯誤, 請自行下載 ) <project xmlns="http://maven.apach
Spring+SpringMVC+MyBatis深入學習及搭建(三)——MyBatis全局配置文件解析
保持 nbsp 延遲加載 行為 span 方便 doc ima actor 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6874672.html 前面有寫到Spring+SpringMVC+MyBatis深入學習及搭建(二)&
多工程:基於Maven的SSM(Spring,SpringMvc,Mybatis)整合的web工程(中)
png 開始 版本 war mage ont 右鍵 調用 web工程 上篇用了單工程創建了SSM整合的web工程(http://www.cnblogs.com/yuanjava/p/6748956.html),這次我們把上篇的單工程改造成為多模塊工程 一:創建
Spring+SpringMVC+MyBatis深入學習及搭建(四)——MyBatis輸入映射與輸出映射
指定 2.6 face 生成 shm hashmap ace and 包裝 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6878529.html 前面有講到Spring+SpringMVC+MyBatis深入學習及搭建(三)&
Spring+SpringMVC+MyBatis深入學習及搭建(八)——MyBatis查詢緩存
idt rtu void spring 寫到 查詢緩存 修改 針對 target 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6956206.html 前面講到:Spring+SpringMVC+MyBatis深入學習及搭建(
Spring+SpringMVC+MyBatis深入學習及搭建(十)——MyBatis逆向工程
cat springmvc blank 不為 tex llc root from ssi 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面講到:Spring+SpringMVC+MyBatis深入學習及
Spring+SpringMVC+MyBatis深入學習及搭建(十一)——SpringMVC架構
框架 ppi spring框架 edit 不同的 com get request html 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6985816.html 前面講到:Spring+SpringMVC+MyBatis深入學習
Spring+SpringMVC+MyBatis深入學習及搭建(十四)——SpringMVC和MyBatis整合
文件拷貝 conf lips glib ide doc from ive body 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/7010363.html 前面講到:Spring+SpringMVC+MyBatis深入學習及搭建(
SSM:spring+springmvc+mybatis框架中的XML配置文件功能詳細解釋
con initial -m and 整理 .get 尺寸 internal 頁面 SSM:spring+springmvc+mybatis框架中的XML配置文件功能詳細解釋 2016-04-14 23:40 13030人閱讀 評論(2) 收藏 舉報
spring+springmvc+mybatis詳細運轉流程
har pop color bits overflow one tom common jdbc spring+springmvc+mybatis詳細運轉流程 2016-04-14 23:38 1892人閱讀 評論(0) 收藏 舉報 分類: SSM
Spring+SpringMVC+MyBatis深入學習及搭建(二)——MyBatis原始Dao開發和mapper代理開發
oid 方法註入 內部 需要 com 配置文件信息 lec lang auth 前面有寫到Spring+SpringMVC+MyBatis深入學習及搭建(一)——MyBatis的基礎知識。MybatisFirst中存在大量重復的代碼。這次簡化下代碼: 使用MyBatis開發
Spring+SpringMVC+MyBatis深入學習及搭建(四)——MyBatis輸入映射與輸出映射(轉發同上)
resultmap 根據 except 就會 ash 用戶名 mvc html like 原地址:http://www.cnblogs.com/shanheyongmu/p/7121556.html 1. 輸入映射 通過parameterType指定輸入參數的類型,類型可
SSM框架Spring+SpringMVC+MyBatis——詳細整合教程
servle aps files framework l數據庫 建立 blank onf pin 摘要: 包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的... 摘要:
Spring-SpringMVC-Mybatis整合的步驟
read oot exceptio img gda gif force system 緩存 1.導入jar包 1.1 spring面向切面jar包 com.springsource.net.sf.cglib-2.2.0.jar com.spring
4.IDEA用maven新建spring+springmvc+mybatis的web工程
測試 center -m 支持 書寫 size poj web 訪問 4.IDEA新建maven+springmvc的web工程 1.新建web工程 2.導入框支持 3.配置web.xml 4.配置spring.xml 5.配置spring-mvc.xml 6.配置spri