Spring介紹:
spring 使用基本的 JavaBean 來完成之前只可能由 EJB 完成的事情。然而, Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java 應用均可以從 Spring 中受益。 簡單來講, Spring 是一個輕量級的控制反轉(IoC )和麪向切面( AOP )的容器框架。javascript
SpringMVC介紹
Spring MVC 屬於 SpringFrameWork 的後續產品,已經融合在Spring Web Flow 裏面。 Spring MVC 分離了
控制器 、模型
對象 、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。
MyBatis介紹
MyBatis 本是
apache 的一個開源項目
iBatis , 2010 年這個項目由apache software foundation 遷移到了 google code ,而且更名爲 MyBatis 。MyBatis 是一個基於 Java 的
持久層 框架。 iBATIS 提供的
持久層 框架包括SQL Maps 和 Data Access Objects ( DAO ) MyBatis 消除了幾乎全部的 JDBC 代碼和參數的手工設置以及結果集的檢索。 MyBatis 使用簡單的 XML 或註解用於配置和原始映射,將接口和 Java 的 POJOs ( Plain Old Java Objects ,普通的 Java 對象)映射成數據庫中的記錄。
首先不是maven架構整合的 SSM 框架
建立數據庫、表db_zsl t_user user_t【最下面有sql語句】css
1.項目總體結構html

2.添加相關jar 包java

3.項目總體結構出來了python
4.建立model【User】mysql
- package com.lyt.model;
-
- public class User {
-
- private int id;
- private String userName;
- private String age;
-
- @Override
- public String toString() {
- return "User [id=" + id + ", age=" + age + ", userName=" + userName
- + "]";
- }
- public User(){
- super();
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public User(int id, String age, String userName) {
- super();
- this.id = id;
- this.age = age;
- this.userName = userName;
- }
- }
5.建立DAO接口【在mybatis中 mapper就至關於dao】jquery
- package com.lyt.mapper;
-
- import java.util.List;
-
- import com.lyt.model.User;
- public interface UserMapper {
- void save(User user);
- boolean update(User user);
- boolean delete(int id);
- User findById(int id);
- List<User> findAll();
- }
- 5.建立DAO接口【在mybatis中 mapper就至關於dao】
- package com.lyt.mapper;
-
- import java.util.List;
-
- import com.lyt.model.User;
- public interface UserMapper {
- void save(User user);
- boolean update(User user);
- boolean delete(int id);
- User findById(int id);
- List<User> findAll();
- }
6.實現dao接口【mybatis中就是UserMapper.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:必須與對應的接口全類名一致 UserMapper.java
- id :必須與對應接口的某個對應的方法名一致即必需要和UserMapper.java接口中的方法同名。
- -->
- <mapper namespace="com.lyt.mapper.UserMapper">
-
- <insert id="save" parameterType="User">
- insert into t_user(user_name,user_age) values(
- </insert>
-
- <update id="update" parameterType="User">
- update t_user set user_name=
- </update>
-
- <delete id="delete" parameterType="int">
- delete from t_user where user_id=
- </delete>
-
- <!-- mybsits_config中配置的alias類別名,也可直接配置resultType爲類路徑 -->
- <select id="findById" parameterType="int" resultType="User">
- select user_id id,user_name userName,user_age age from t_user where user_id=
- </select>
-
- <select id="findAll" resultType="User">
- select user_id id,user_name userName,user_age age from t_user
- </select>
-
- </mapper>
這裏對這個xml文件做幾點說明:
一、namespace必須與對應的接口全類名一致。
二、id必須與對應接口的某個對應的方法名一致即必需要和UserMapper.java接口中的方法同名。
--------------------------------------------------- 7.mybatis與Spring整合【spring-common.xml】放在src的根目錄下web
對於Mybatis和Spring的整合是這篇博文的重點,須要配置的內容在下面有詳細的解釋。spring
- <?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:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
-
- <!-- Mybatis和Spring的整合 -->
- <!-- 1. 數據源 : DriverManagerDataSource -->
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3306/db_zsl" />
- <property name="username" value="root" />
- <property name="password" value="root" />
- </bean>
-
- <!--
- 2. mybatis的SqlSession的工廠: SqlSessionFactoryBean dataSource:引用數據源
-
- MyBatis定義數據源,贊成加載配置
- -->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"></property>
- <property name="configLocation" value="classpath:mybatis-config.xml" />
- </bean>
-
- <!--
- 3. mybatis自動掃描加載Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory
-
- basePackage:指定sql映射文件/接口所在的包(自動掃描)
- -->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.lyt.mapper"></property>
- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
- </bean>
-
- <!--
- 4. 事務管理 : DataSourceTransactionManager dataSource:引用上面定義的數據源
- -->
- <bean id="txManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"></property>
- </bean>
-
- <!-- 5. 使用聲明式事務
- transaction-manager:引用上面定義的事務管理器
- -->
- <tx:annotation-driven transaction-manager="txManager" />
-
- </beans>
- 8.mybatis配置文件【mybatis-config.xml】放在src目錄下
- <?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>
-
- <!-- 實體類,簡稱 -設置別名 -->
- <typeAliases>
- <typeAlias alias="User" type="com.lyt.model.User" />
- </typeAliases>
- <!-- 實體接口映射資源 -->
- <!--
- 說明:若是xxMapper.xml配置文件放在和xxMapper.java統一目錄下,mappers也能夠省略,由於org.mybatis.spring.mapper.MapperFactoryBean默認會去查找與xxMapper.java相同目錄和名稱的xxMapper.xml
- -->
- <mappers>
- <mapper resource="com/lyt/mapper/userMapper.xml" />
- </mappers>
-
- </configuration>
-
配置log4j.propertiessql
- log4j.rootLogger = info , Console , D
- log4j.appender.Console=org.apache.log4j.ConsoleAppender
- log4j.appender.Console.layout=org.apache.log4j.PatternLayout
- log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
- log4j.logger.java.sql.ResultSet=INFO
- log4j.logger.org.apache=INFO
- log4j.logger.java.sql.Connection=INFO
- log4j.logger.java.sql.Statement=INFO
- log4j.logger.java.sql.PreparedStatement=INFO
- log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
- log4j.appender.D.File = D\:/logs/log.log
- log4j.appender.D.Append = true
- log4j.appender.D.Threshold = INFO \
- log4j.appender.D.layout = org.apache.log4j.PatternLayout
- log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
-
10.整合Springmvc
配置【spring-mvc.xml】放在src根目錄下
- <?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"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- 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-4.0.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
-
- <!-- 註解掃描包 -->
- <context:component-scan base-package="com.lyt.controller" />
- <context:component-scan base-package="com.lyt.service" />
-
- <!-- 開啓註解 -->
- <mvc:annotation-driven />
-
- <!--
- 配置靜態資源,直接映射到對應的文件夾,不被DispatcherServlet處理,3.04新增功能,須要從新設置spring-mvc-3.0.xsd
- -->
- <mvc:resources mapping="/img/**" location="/img/" />
- <mvc:resources mapping="/js/**" location="/js/" />
- <mvc:resources mapping="/css/**" location="/css/" />
- <mvc:resources mapping="/html/**" location="/html/" />
-
-
-
- <!-- 定義跳轉的文件的先後綴 ,視圖模式配置-->
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!-- 這裏的配置個人理解是自動給後面action的方法return的字符串加上前綴和後綴,變成一個 可用的url地址 -->
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
- </beans>
- 11.配置web.xml
- <?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">
-
- <!-- 加載Spring容器配置 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
-
- <!-- 設置Spring容器加載全部的配置文件的路徑 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <!-- <param-value>classpath:config/spring-*.xml</param-value> -->
- <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>
-
- </context-param>
-
- <!-- 配置SpringMVC核心控制器 -->
- <servlet>
- <servlet-name>springMVC</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!-- 配置初始配置化文件,前面contextConfigLocation看狀況二選一 -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>
- </init-param>
- <!-- 啓動加載一次 -->
- <load-on-startup>1</load-on-startup>
- </servlet>
-
- <!--爲DispatcherServlet創建映射 -->
- <servlet-mapping>
- <servlet-name>springMVC</servlet-name>
- <!-- 此處能夠能夠配置成*.do,對應struts的後綴習慣 -->
- <url-pattern>/</url-pattern>
- </servlet-mapping>
-
- <!-- 防止Spring內存溢出監聽器 -->
- <listener>
- <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
- </listener>
-
- <!-- 解決工程編碼過濾器 -->
- <filter>
- <filter-name>encodingFilter</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>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
-
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
- 12.創建service以及service實現【UserService.java】
- package com.lyt.service;
-
- import java.util.List;
-
- import com.lyt.model.User;
-
- public interface UserService {
- void save(User user);
- boolean update(User user);
- boolean delete(int id);
- User findById(int id);
- List<User> findAll();
- }
【UserServiceImpl.java】
- package com.lyt.service.impl;
-
- import java.util.List;
-
- import javax.annotation.Resource;
-
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
-
- import com.lyt.mapper.UserMapper;
- import com.lyt.model.User;
- import com.lyt.service.UserService;
-
- @Service
- @Transactional
- // 此處再也不進行建立SqlSession和提交事務,都已交由spring去管理了。
- public class UserServiceImpl implements UserService {
-
- @Resource
- private UserMapper mapper;
-
- /**
- * 根據 id 刪除 數據
- */
- public boolean delete(int id) {
- return mapper.delete(id);
- }
- /**
- * 查詢User的所有數據
- */
- public List<User> findAll() {
- List<User> findAllList = mapper.findAll();
- return findAllList;
- }
- /**
- * 根據 id 查詢 對應數據
- */
- public User findById(int id) {
- User user = mapper.findById(id);
- return user;
- }
- /**
- * 新增數據
- */
- public void save(User user) {
- mapper.save(user);
- }
- /**
- * 根據 id 修改對應數據
- */
- public boolean update(User user) {
- return mapper.update(user);
- }
-
- }
13.創建Controller【UserController.java】
- <span style="font-size:14px;">package com.lyt.controller;
-
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.List;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
-
- import com.lyt.model.User;
- import com.lyt.service.UserService;
-
- @Controller
- @RequestMapping("/user")
- public class UserController {
- @Autowired
- private UserService userService;
- /**
- * 獲取全部用戶列表
- * @param request
- * @return
- */
- @RequestMapping("/getAllUser")
- public String getAllUser(HttpServletRequest request,Model model){
- List<User> user = userService.findAll();
- model.addAttribute("userList", user);
- request.setAttribute("userList", user);
- return "/allUser";
- }
- /**
- * 跳轉到添加用戶界面
- * @param request
- * @return
- */
- @RequestMapping("/toAddUser")
- public String toAddUser(){
- return "/addUser";
- }
- /**
- * 添加用戶並重定向
- * @param user
- * @param request
- * @return
- */
- @RequestMapping("/addUser")
- public String addUser(User user,Model model){
- userService.save(user);
- return "redirect:/user/getAllUser";
- }
- /**
- *編輯用戶
- * @param user
- * @param request
- * @return
- */
- @RequestMapping("/updateUser")
- public String updateUser(User user,HttpServletRequest request,Model model){
- if(userService.update(user)){
- user = userService.findById(user.getId());
- request.setAttribute("user", user);
- model.addAttribute("user", user);
- return "redirect:/user/getAllUser";
- }else{
- return "/error";
- }
- }
- /**
- * 根據id查詢單個用戶
- * @param id
- * @param request
- * @return
- */
- @RequestMapping("/getUser")
- public String getUser(int id,HttpServletRequest request,Model model){
- request.setAttribute("user", userService.findById(id));
- model.addAttribute("user", userService.findById(id));
- return "/editUser";
- }
- /**
- * 刪除用戶
- * @param id
- * @param request
- * @param response
- */
- @RequestMapping("/delUser")
- public void delUser(int id,HttpServletRequest request,HttpServletResponse response){
- String result = "{\"result\":\"error\"}";
- if(userService.delete(id)){
- result = "{\"result\":\"success\"}";
- }
- response.setContentType("application/json");
- try {
- PrintWriter out = response.getWriter();
- out.write(result);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- </span>
至此 大部分架構以及代碼已經搭建完成
咱們來作前臺頁面--修改index.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- 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>首頁</title>
- </head>
- <body>
- <h5>
- <a href="<%=basePath%>user/getAllUser">進入用戶管理頁</a>
- </h5>
- </body>
- </html>
在 WEB-INF 下新建jsp文件夾【裏面新建如下文件】【addUser.jsp】【allUser.jsp】【editUser.jsp】
addUser.jsp內容
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>添加用戶</title>
-
- <script type="text/javascript">
- function addUser(){
- var form = document.forms[0];
- form.action = "<%=basePath%>user/addUser";
- form.method="post";
- form.submit();
- }
- </script>
-
- </head>
-
- <body>
- <h1><%=path%>添加用戶<%=basePath%></h1>
- <form action="" name="userForm">
- 姓名:<input type="text" name="userName">
- 年齡:<input type="text" name="age">
- <input type="button" value="添加" onclick="addUser()">
- </form>
- </body>
- </html>
allUser.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <script type="text/javascript" src="js/jquery-1.7.1.js"></script>
- <title>用戶列表</title>
-
- <script type="text/javascript">
- function del(id){
- $.get("<%=basePath%>user/delUser?id=" + id,function(data){
- if("success" == data.result){
- alert("刪除成功");
- window.location.reload();
- }else{
- alert("刪除失敗");
- }
- });
- }
- </script>
- </head>
-
- <body>
- <h6><a href="<%=basePath%>user/toAddUser">添加用戶</a></h6>
- <table border="1">
- <tbody>
- <tr>
- <th>姓名</th>
- <th>年齡</th>
- <th>操做</th>
- </tr>
- <c:if test="${!empty userList }">
- <c:forEach items="${userList}" var="user">
- <tr>
- <td>${user.userName }</td>
- <td>${user.age }</td>
- <td>
- <a href="<%=basePath%>user/getUser?id=${user.id}">編輯</a>
- <a href="javascript:del('${user.id }')">刪除</a>
- </td>
- </tr>
- </c:forEach>
- </c:if>
- </tbody>
- </table>
- </body>
- </html>
editUser.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>編輯用戶</title>
-
- <script type="text/javascript">
- function updateUser(){
- var form = document.forms[0];
- form.action = "<%=basePath%>user/updateUser";
- form.method="post";
- form.submit();
- }
- </script>
-
- </head>
-
- <body>
- <h1>添加用戶</h1>
- <form action="" name="userForm">
- <input type="hidden" name="id" value="${user.id }"/>
- 姓名:<input type="text" name="userName" value="${user.userName }"/>
- 年齡:<input type="text" name="age" value="${user.age }"/>
- <input type="button" value="編輯" onclick="updateUser()"/>
- </form>
- </body>
-
- </html>
到此 簡單的整合SSM 【基本的操做內容已經完成】
讓大家看下界面運行,地址:http://localhost:8088/SpringMVC_Spring_mybatis/
首頁:

點擊編輯進去:

點擊添加進去:

因爲我在網絡問題 圖片暫時沒有上傳上去。【如今我吧圖片都正上去了,但願多多支持】
對應的數據庫 表
- /*
- Navicat MySQL Data Transfer
-
- Source Server : localhost
- Source Server Version : 50515
- Source Host : localhost:3306
- Source Database : db_zsl
-
- Target Server Type : MYSQL
- Target Server Version : 50515
- File Encoding : 65001
-
- Date: 2016-05-16 16:10:51
- */
-
- SET FOREIGN_KEY_CHECKS=0;
- -- ----------------------------
- -- Table structure for `t_user`
- -- ----------------------------
- DROP TABLE IF EXISTS `t_user`;
- CREATE TABLE `t_user` (
- `user_id` int(11) NOT NULL AUTO_INCREMENT,
- `user_name` varchar(20) NOT NULL,
- `user_age` varchar(20) NOT NULL,
- PRIMARY KEY (`user_id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-
- -- ----------------------------
- -- Records of t_user
- -- ----------------------------
- INSERT INTO `t_user` VALUES ('2', '朱佳鵬', '25');
- INSERT INTO `t_user` VALUES ('3', '傻狍子', '150');
- INSERT INTO `t_user` VALUES ('4', 'jiuqiyuliang', '23');
- INSERT INTO `t_user` VALUES ('5', 'jiuqiyuliang', '23');
- INSERT INTO `t_user` VALUES ('6', 'jiuqiyuliang', '23');
- INSERT INTO `t_user` VALUES ('7', 'jiuqiyuliang', '23');
- INSERT INTO `t_user` VALUES ('9', 'liyintao123', '23123');
-
- -- ----------------------------
- -- Table structure for `user_t`
- -- ----------------------------
- DROP TABLE IF EXISTS `user_t`;
- CREATE TABLE `user_t` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `user_name` varchar(40) NOT NULL,
- `password` varchar(255) NOT NULL,
- `age` int(4) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-
- -- ----------------------------
- -- Records of user_t
- -- ----------------------------
- INSERT INTO `user_t` VALUES ('1', '測試', 'sfasgfaf', '24');