前言:
本來是想像之前一樣繼續跟新Mybatis,但由於種種原因,遲遲沒有更新,快開學了,學了一個暑假,博客也更新了不少,我覺得我得緩緩,先整合一些案例練練,等我再成熟點理解再透徹點之后再詳細更新,如果僅僅是為了更新博客而忽視質量的話,有違我的初心,所以我決定,暫時轉移路線,整合一些案例,為了以后更新更好的博客而准備。
案例准備
開發工具:IDEA
前端頁面:
-
在Bootstrap官網https://getbootstrap.com/下載 Bootstrap CSS、JavaScript 和字體的預編譯的壓縮版本
-
從 jquery.com 下載 jQuery 庫
案例解析
創建Maven項目
創建數據庫
CREATE DATABASE moocmybatis; USE moocmybatis; CREATE TABLE users( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用戶編號', username VARCHAR(50) NOT NULL COMMENT '登錄賬號', userpass VARCHAR(50) NOT NULL COMMENT '登錄密碼', nickname VARCHAR(50) COMMENT '昵稱', age INT COMMENT '用戶年齡', gender VARCHAR(5) COMMENT '用戶性別', phone VARCHAR(13) COMMENT '聯系方式', email VARCHAR(20) COMMENT '用戶郵箱', createTime DATETIME COMMENT '賬號創建時間', updateTime DATETIME COMMENT '賬號最后修改時間', lastLogin DATETIME COMMENT '賬號最后一次登錄時間', userStatus INT COMMENT '用戶賬號的狀態 0 正常 1 鎖定 2 刪除', remark TEXT COMMENT '備注' );
pom.xml
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
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> <!-- properties配置,用於加載外部的properties配置文件 --> <properties resource="db.properties"></properties> <!-- environments 主要用於進行數據源的配置 可以配置多個數據源~ 通過default屬性來指定當前項目運行過程中使用的是哪個數據源 --> <environments default="development"> <!-- environment 用於配置一個具體的獨立的數據源 id屬性用於給當前數據源定義一個名稱,方便我們的項目指定 --> <environment id="development"> <!-- transactionManager用於配置事務管理,默認情況下使用的是JDBC事務管理 --> <transactionManager type="JDBC"/> <!-- dataSource具體數據源的鏈接信息;type屬性用於指定是否使用連接池 --> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- mappers主要用於配置我們外部的映射配置文件 在主配置文件中需要引入加載映射配置文件 --> <mappers> <!-- mapper主要配置引入某一個具體的映射文件,resource進行路徑方式的引入 --> <mapper resource="mapper/usersMapper.xml"/> </mappers> </configuration>
usersMapper.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屬性是用來配置命名空間,主要進行session級別的緩存管理 命名空間默認情況下,使用我們當前操作的實體類的全路徑 --> <mapper namespace="com.demo.entity.Users"> <select id="usersList" resultType="com.demo.entity.Users"> select * from users; </select> </mapper>
db.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/moocmybatis?useUnicode=true&characterEncoding=utf8 username=root password=root
Users
package com.demo.entity; import java.util.Date; public class Users { private Integer id; // 用戶編號 private String username; // 登錄賬號 private String userpass; // 登錄密碼 private String nickname; // 用戶昵稱 @Override public String toString() { return "Users{" + "id=" + id + ", username='" + username + '\'' + ", userpass='" + userpass + '\'' + ", nickname='" + nickname + '\'' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserpass() { return userpass; } public void setUserpass(String userpass) { this.userpass = userpass; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } }
TestDemo
import com.demo.entity.Users; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class TestDemo { @Test public void test1() throws IOException { String resource = "mybatis-config.xml"; InputStream is = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session= sqlSessionFactory.openSession(); List<Users> list = session.selectList("usersList"); for (Users user:list){ System.out.println(user); } session.close(); } }
運行結果
測試成功,證明數據庫連接沒有任何問題。
Web
Tomcat的配置看我博客園的博客或自己百度搜索
在文章開頭的網址中下載並添加整理到如圖的文件夾下
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>mybatispro</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用戶管理中心</title> <link rel="stylesheet" href="lib/bootstrap-3.3.7-dist/css/bootstrap.min.css"> <script src="lib/2.2.4/jquery-1.12.4.min.js"></script> <script src="lib/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="page-header"> <h1>泰斗賢若如后台管理系統 <small>用戶數據管理中心</small></h1> </div> </div> <div class="row"> <div class="jumbotron"> <h1>MyBatis基礎入門!</h1> <p>通過一個項目來完成基礎部分的學習</p> <p><a class="btn btn-primary btn-lg" href="#" role="button">請關注泰斗賢若如博客園</a></p> <p><a class="btn btn-primary btn-lg" href="#" role="button">新增用戶</a></p> </div> </div> <div class="row"> <table class="table table-hover table-striped"> <tr> <th>用戶編號</th> <th>登錄賬號</th> <th>用戶昵稱</th> <th>郵箱</th> <th>聯系方式</th> <th>賬號創建時間</th> <th>用戶狀態</th> <th>操作</th> </tr> <tr> <td>111</td> <td>張三豐</td> <td>拉拉</td> <td>222@qq.com</td> <td>244465656</td> <td>2019</td> <td>正常</td> <td> <a href="#">查看</a> <a href="#">修改</a> <a href="#">刪除</a> </td> </tr> <tr> <td>111</td> <td>張三豐</td> <td>拉拉</td> <td>222@qq.com</td> <td>244465656</td> <td>2019</td> <td>正常</td> <td> <a href="#">查看</a> <a href="#">修改</a> <a href="#">刪除</a> </td> </tr> <tr> <td>111</td> <td>張三豐</td> <td>拉拉</td> <td>222@qq.com</td> <td>244465656</td> <td>2019</td> <td>正常</td> <td> <a href="#">查看</a> <a href="#">修改</a> <a href="#">刪除</a> </td> </tr> </table> </div> </div> </body> </html>
啟動服務器並展示頁面
Bootstrap的學習可以到https://v3.bootcss.com/中學習,在這不多說。
繼續深入
SqlSessionFactoryUtils
package com.demo.utils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class SqlSessionFactoryUtils { private static String RESOURCE = "mybatis-config.xml"; private static SqlSessionFactory sqlSessionFactory; private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); /** * 創建一個初始化SqlSessionFactory的方法 */ public static void initSqlSessionFactory(){ try { InputStream is = Resources.getResourceAsStream(RESOURCE); sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { e.printStackTrace(); } } /** * 獲取工廠的方法 * @return */ public static SqlSessionFactory getSqlSessionFactory(){ return sqlSessionFactory; } public static void close(){ SqlSession session = threadLocal.get(); if (session!=null){ session.close(); threadLocal.set(null); } } }
package com.demo.dao; import com.demo.entity.Users; import com.demo.utils.SqlSessionFactoryUtils; import org.apache.ibatis.session.SqlSession; import java.util.List; public class UsersDao { private SqlSession session = SqlSessionFactoryUtils.getSqlSessionFactory().openSession(); private List<Users> list; public List<Users> findAll(){ try { list = session.selectList("findAll"); }catch (Exception e){ e.printStackTrace(); }finally { session.close(); } return list; } }
InitSqlSessionListener
package com.demo.listener; import com.demo.utils.SqlSessionFactoryUtils; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; @WebListener public class InitSqlSessionListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("容器加載中。。。。。"); //初始化SqlSessionFactory對象 SqlSessionFactoryUtils.initSqlSessionFactory(); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { System.out.println("容器銷毀中。。。。。"); //關閉SqlSession對象 SqlSessionFactoryUtils.close(); } }
測試(啟動服務器,關閉服務器)
測試成功。
UsersFindServlet
package com.demo.servlet; import com.demo.dao.UsersDao; import com.demo.entity.Users; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @WebServlet("/index") public class UsersFindServlet extends HttpServlet { private UsersDao usersDao = new UsersDao(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { List<Users> list = usersDao.findAll(); req.setAttribute("usersList",list); req.getRequestDispatcher("index.jsp").forward(req,resp); } }
home.jsp
<%-- Created by IntelliJ IDEA. User: Lenovo Date: 2019/8/16 Time: 9:21 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>跳轉</title> </head> <body> <% response.sendRedirect("/index"); %> </body> </html>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>mybatispro</display-name> <welcome-file-list> <welcome-file>home.jsp</welcome-file> </welcome-file-list> </web-app>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>用戶管理中心</title> <link rel="stylesheet" href="lib/bootstrap-3.3.7-dist/css/bootstrap.min.css"> <script src="lib/2.2.4/jquery-1.12.4.min.js"></script> <script src="lib/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="page-header"> <h1>泰斗賢若如后台管理系統 <small>用戶數據管理中心</small></h1> </div> </div> <div class="row"> <div class="jumbotron"> <h1>MyBatis基礎入門!</h1> <p>通過一個項目來完成基礎部分的學習</p> <p><a class="btn btn-primary btn-lg" href="#" role="button">請關注泰斗賢若如博客園</a></p> <p><a class="btn btn-primary btn-lg" href="#" role="button">新增用戶</a></p> </div> </div> <div class="row"> <table class="table table-hover table-striped"> <tr> <th>用戶編號</th> <th>登錄賬號</th> <th>用戶密碼</th> <th>用戶昵稱</th> </tr> <c:forEach var="user" items="${usersList}"> <tr> <td>${user.id}</td> <td>${user.username}</td> <td>${user.userpass}</td> <td>${user.nickname}</td> <td> <a href="#">查看</a> <a href="#">修改</a> <a href="#">刪除</a> </td> </tr> </c:forEach> </table> </div> </div> </body> </html>
開啟服務器測試
測試成功
好,到這的話Mybatis基礎操作入門應該差不多了,此篇到此結束,下一篇會繼續更新增刪改查功能。
*****************************************************************************************************
我的博客園地址:https://www.cnblogs.com/zyx110/