搭建strust2+mybatis

环境需要jar包(添加完jar包记得build path):

strust2源码jar包

struts2-core-2.5.18.jar

json插件jar包:

struts2-json-plugin-2.5.jar

数据连接jar包

mysql-connector-java-8.0.16.jar

mybatis jar包

mybatis-3.4.6.jar

mybatis自动生成jar包(自动生成实体,基本的sql语句)

mybatis-generator-core-1.3.7.jar

web.xml配置如下
注意strust版本问题会导致过滤器配置不同

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>search</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>search.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

大致结构(纯属个人意见)
在这里插入图片描述
strust.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<!-- 开启开发者模式 -->
	<constant name="struts.devMode" value="true" />
	<!-- struts配置文件改动后,是否重新加载 -->
	<constant name="struts.configuration.xml.reload" value="true" />
	<package name="page" extends="struts-default"
		namespace="/">
		<action name="page_*" class="control.Strust" method="{1}">
			<result name="success">/jsp/index.jsp</result>
			<result name="login">/jsp/login.jsp</result>
			<result name="err">/jsp/err.jsp</result>
			<allowed-methods>regex:.*</allowed-methods>
		</action>
	</package>
	<!-- namespace="/add"相当于访问http://localhost:8080/search/add/data_index-->
	<package name="data" extends="json-default" namespace="/">
		<action name="data_*" class="control.Strustjson" method="{1}">
			<!-- 返回json对象-->
			<result name="jsonResponse" type="json">
				<!-- 去掉空值 -->
				<param name="excludeNullProperties">true</param>
				<!-- 与方法中的对象对应(名字要一致)-->
				<param name="root">jsonResponse</param>
			</result>
			<result name="login" type="json">
				<param name="excludeNullProperties">true</param>
				<param name="root">jsonResponse</param>
			</result>
			<result name="success" type="json">
				<param name="excludeNullProperties">true</param>
				<param name="root">list</param>
			</result>
			<result name="admin" type="json">
				<param name="excludeNullProperties">true</param>
				<param name="root">jsonResponse</param>
			</result>
			<result name="message" type="json">
				<param name="excludeNullProperties">true</param>
				<param name="root">list</param>
			</result>
			<allowed-methods>regex:.*</allowed-methods>
	</package>
</struts>

动态方法调用:

<!-- 访问路径为http://localhost:8080/search/data_admin,会调用control.Strustjson类里admin方法 -->
<action name="data_*" class="control.Strustjson" method="{1}">

允许动态方法:

<!-- 允许动态方法 -->
<allowed-methods>regex:.*</allowed-methods>

session工厂(MybatisUtil)配置如下:

package common;
 
import java.io.IOException;
import java.io.Reader;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
public class MybatisUtil {
   <!-- 资源路径(mybatis-config.xml)如下-->
     private static final String resource = "mybatis-config.xml";
     private static Reader reader;
     private static SqlSessionFactory sqlSessionFactory;
     static{
         try {
                   reader = Resources.getResourceAsReader(resource);
                   sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
                   } catch (IOException e) {
                         e.printStackTrace();
                   }
     }
 
     private static final ThreadLocal<SqlSession> THREAD_LOCAL = new ThreadLocal<SqlSession>();
 
     public static SqlSession getcurrentSession(){
          SqlSession session = THREAD_LOCAL.get();
          if(session==null){
            session = sqlSessionFactory.openSession();
            THREAD_LOCAL.set(session);
           }
         return session;
     }
 
     public static void closeSession(){
          SqlSession session = THREAD_LOCAL.get();
          THREAD_LOCAL.set(null);
          if(session!=null){
                session.close();
          }
     }
}

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 resource="xml/mybatis.properties" />
	<!-- <settings>
		<setting name="mapUnderscoreToCamelCase" value="true" />
		<setting name="jdbcTypeForNull" value="NULL" />
		<setting name="cacheEnabled" value="true" />
		<setting name="defaultFetchSize" value="100" />
	</settings> -->
	<typeAliases>
		<package name="utils/User" />
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
	  <!-- 对应里的mapper.xml(sql语句的位置)-->
		<mapper resource="mapper/CompanyMapper.xml"/>
		<mapper resource="mapper/AdaMapper.xml" />
		<mapper resource="mapper/AddMapper.xml" />
	</mappers>
</configuration>

xml/mybatis.propertie配置如下(高版本的jsbc需要时钟的配置):

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/example?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

CompanyMapper.xml里的

  <!-- 对应的是你的接口位置->
<mapper namespace="mapperXML.AdaMapper">

json数据辅助类:

package common;

import java.io.Serializable;

public class JsonResponse implements Serializable{

	private static final long serialVersionUID = 1L;
	private int code;
	private String msg;
	private Object data;
	public int getCode() {
		return code;
	}
	public void setCode(int code) {
		this.code = code;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	}
	
	public JsonResponse(int code, String msg, Object data) {
		super();
		this.code = code;
		this.msg = msg;
		this.data = data;
	}
	public JsonResponse() {
	
	}
	public static JsonResponse Success(Object data) {
		return new JsonResponse(1,"success",data);
	}
	public static JsonResponse Fail(Object data) {
		return new JsonResponse(1,"fail",data);
	}
}

控制类需要继承 ActionSupport

public class Strust extends ActionSupport {
	private static final long serialVersionUID = 1L;

	public String index() {
		
		return "success";
	}

	public String login() {

		return "login";
	}

	public String err() {

		return "err";
	}
}

mybatis的使用

  			<!--获取session->
			SqlSession session = MybatisUtil.getcurrentSession();
			CompanyMapper mapper = session.getMapper(CompanyMapper.class);
			CompanyExample company = new CompanyExample();
			 <!-- 重复值设定-->
			company.setDistinct(false);
			<!-- 排序规则-->
			company.setOrderByClause("id");
			Criteria createCriteria = company.createCriteria();
			<!-- 等于sql语句where id = 11111111-->
			createCriteria.andIdEqualTo(11111111);
			<!--list转化成对象-->
			Company companyf = (Company) mapper.selectByExample(company).get(0);
			<!--如果是更新,需要commit才能向数据库提交数据>
			session.commit();
			<!--关闭session->
			MybatisUtil.closeSession();

自动生成类的main函数:

package Test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

public class Test {

	public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, Throwable, InterruptedException {
		 List<String> warnings = new ArrayList<String>();
		    boolean overwrite = true;
		    //指向逆向工程配置文件
		    File configFile = new File("config.xml"); 
		    ConfigurationParser cp = new ConfigurationParser(warnings);
		    Configuration config = cp.parseConfiguration(configFile);
		    DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		    MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings);
		    myBatisGenerator.generate(null);
		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值