初涉SpringBoot— 消息系统项目总结

这个项目是本人接触的第一个springboot项目,之前也没有系统的学习过,好在有我的同事师傅的指点,才能顺利完成。

 首先这个项目的技术构成springboot+sqlservice+ Thymeleaf  项目的结构如下
                                              
编写整个项目时遇到过如下问题
1:如何将sql语句写到mapper文件中
      springboot默认的在数据库访问的接口类方法上写sql语句如
public interface BlogMapper {

	@Select("select * from article")
	public ArrayList getAll();
}
如果想将sql语句抽到mapper文件中需要在 application.properties配置中添加
mybatis.mapper-locations=classpath:mapper/*.xml
 并在mapper文件里通过 
   
在mappe接口中通过@Mapper注解来映射。
@Mapper
public interface BlackEdmIdsMapper {
	/**
	  * 查询总记录数
	  * @return
	  */
	 int countSqlData();
}

 
   
 
  
2:对thymeleaf模版语法的使用
   2.1: 在springboot项目中如要使用thymeleaf模版需要在pom文件中加
		
			org.springframework.boot
			spring-boot-starter-thymeleaf
			1.5.3.RELEASE
		
   2.2: 在html语句中thymeleaf的语法
      2.2.1 读取后台传的单个对象 使用th:text或者th:value
        
   
      2.2.2 读取后台传的集合列表

			
			
			
			
			
			
			
	
 
      2.2.3  switch-case语句
			
				

不可用

可用


      2.2.4   thymeleaf 语句动态生存select

      2.2.5  select option动态匹配选中选中

      2.2.6  a标签如何使用 thymeleaf
   返回列表

2.2.6  js如何使用 thymeleaf 需添加 th:inline="javascript"


3:如何添加日志文件,这个项目采用的是log4j2
        首先要在pom文件中添加依赖包


       
        org.springframework.boot  
        spring-boot-starter  
          
              
                org.springframework.boot  
                spring-boot-starter-logging  
              
          
      
	   
        org.springframework.boot  
        spring-boot-starter-log4j2  
      	
 然后在 application.properties中添加配置
#log4j2配置文件
logging.config=classpath:log4j2.xml

然后在classpath路径下添加log4j2.xml文件。这个网上一大堆,我也是从网上找的





    
    
    
        
        
            
        
    

    
        
                    
            
            
            
                
                
            
        
        
            
            
            
                
                
            
        
            
        
        
            
            
            
                
                
            
        
    
    
    
        
        
        
        
            
            
            
            
        
    

4:项目在打包运行后如何将配置文件拿到jar外方便对数据库连接进行修改
数据库连接字符串是写在application.properties 把它抽出来(更改为了xzs.properties)方便打包时更改数据库连接。(抽出application.properties有很多种方法详见点击打开链接)我用的是在启动类通过@PropertySource加载
@SpringBootApplication
@PropertySource(value={"file:xzs.properties"})//跟配置文件路径
public class JavaMessageCenterApplication {

	public static void main(String[] args) {
		SpringApplication.run(JavaMessageCenterApplication.class, args);
	}
}
 

在代码方面需要注意的是对页面传值合法性的判断,对异常的try catch
下面是从mapper到controller的代码
mapper
package com.example.messageCenter.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.example.messageCenter.entity.EdmSettingDao;


/**
 * 邮件列表mapper
 * @author xzs
 *
 */
@Mapper
public interface EdmSettingMapper {

 /**
  * 查询总记录数
  * @return
  */
 int countSqlData();
 /**
  * 分页查询
  * @param currentPage 查询页数
  * @param pageDataCount 显示条数
  * @return
  */
 List pagingQuery(@Param("currentPage")int currentPage,@Param("pageDataCount")int pageDataCount);
 
 /**
  * 插入邮件数据
  * @param emailDao
  * @return
  */
 int insertEmail(EdmSettingDao emailList);
 /**
  * 验证id是否存在
  * @param emailDao
  * @return
  */
 int verificationId(@Param("id")int id);
 
 /**
  * 根据条件查询
  * @param id
  * @param descr
  * @return
  */
 List selectEmailIdOrEmailName(@Param("id")String id,@Param("descr")String descr);
 
 /**
  * 根据id查询
  * @param id
  * @return
  */
 EdmSettingDao selectById(@Param("id")String id);
 
 
 /**
  * 修改
  * @param emailList
  * @return
  */
 int updateEmail(EdmSettingDao emailList);
 

mapper.xml
  






	

	
	

	
	

	
	

	
		insert into edm_setting
		(
		id,
		descr,
		mail_title,
		mail_body,
		mail_from,
		mail_to,
		mail_cc,
		mail_bcc,
		
			biz_type,
		
		
			edm_app_id,
		
		
			status,
		
		reply_to

		)
		VALUES (

		#{id},
		#{descr},
		#{mailTitle},
		#{mailBody},
		#{mailFrom},
		#{mailTo},
		#{mailCc},
		#{mailBcc},
		
			#{bizType},
		
		
			#{edmAppId},
		
		
			#{status},
		
		#{replyTo}

		)
	
	
	


	
	

	
		update edm_setting set
		descr=#{descr},
		mail_title=#{mailTitle},
		mail_body=#{mailBody},
		mail_from=#{mailFrom},
		mail_to=#{mailTo},
		mail_cc=#{mailCc},
		mail_bcc=#{mailBcc},
		reply_to=#{replyTo},
		
			biz_type=#{bizType},
		
		
			biz_type=null,
		
		
			edm_app_id=#{edmAppId},
		
		
			edm_app_id=null,
		
		
			status=#{status},
		
		
			status=null,
		
		update_date=GETDATE()
		where
		id=#{id}
	



service interface
package com.example.messageCenter.service;

import java.util.List;

import com.example.messageCenter.dataResult.DataResult;
import com.example.messageCenter.entity.EdmSettingDao;


/**
 * 邮件列表service
 * @author xzs
 *
 */
public interface EdmSettingService {


	
	 /**
	  * 总记录数
	  * @return
	  */
	 int countSqlData();
	 
	 /**
	  * 总页数
	  * @param sqlCount
	  * @return
	  */
	 int returnCountPage();
	 
	 /**
	  * 分页查询
	  * @param currentPage 查询页数
	  * @return
	  */
	 List pagingQuery(int currentPage);
	 
	 /**
	  * 插入邮件数据
	  * @param emailDao
	  * @return
	  */
	 DataResult insertEmail(EdmSettingDao emailDao);
	 
	 /**
	  * 根据条件查询
	  * @param id
	  * @param descr
	  * @return
	  */
	 List selectEmailIdOrEmailName(String idStr,String descr);
	 
	 
	 /**
	  * 根据id查询

	  * @return
	  */
	 EdmSettingDao selectById(String id);
	 
	 /**
	  * 修改
	  * @param emailList
	  * @return
	  */
	 DataResult updateEmail(EdmSettingDao emailList);
	 
	 
	 /**
	  * 验证id是否存在
	  * @param emailDao
	  * @return
	  */
	 DataResult verificationId(String idStr);
	 
	 
}

service  impl
package com.example.messageCenter.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.messageCenter.dataResult.DataResult;
import com.example.messageCenter.entity.SmsAppDao;
import com.example.messageCenter.entity.SmsGroupDao;
import com.example.messageCenter.entity.SmsSettingDao;
import com.example.messageCenter.mapper.SmsAppMapper;
import com.example.messageCenter.mapper.SmsGroupMapper;
import com.example.messageCenter.mapper.SmsSettingMapper;
import com.example.messageCenter.service.SmsSettingService;
import com.example.messageCenter.util.PageUtil;
@Service
public class EdmSettingServiceImpl implements SmsSettingService {

	@Autowired
	private SmsSettingMapper smsMaper;

	@Autowired
	private SmsGroupMapper smsGroup;
	
	@Autowired
	private SmsAppMapper smsApp;
	
	@Override
	public int countSqlData() {
		int sqlCount = smsMaper.countSqlData();
		return sqlCount;
	}

	@Override
	public int returnCountPage() {
		int sqlCount = countSqlData();
		int pageCount = PageUtil.returnPageCount(sqlCount);
		return pageCount;
	}

	@Override
	public List pagingQuery(int currentPage) {
		List pagingQuery = smsMaper.pagingQuery(currentPage, PageUtil.PAGEDATACOUNT);
		return pagingQuery;
	}

	@Override
	public DataResult insertSms(SmsSettingDao smsDao) {
		DataResult data = new DataResult();
		int id = smsDao.getSmsId();
		
		if(smsMaper.verificationId(id)>0){//最好判断一下id是否为空
			//说明该id已经存在
			data.setIsSuccess(false);
			data.setMessage("ID为:"+id+"数据已存在,请另外输入ID");
			
		}else{

			int insertSms = smsMaper.insertSmsSetting(smsDao);
			if(insertSms>0){
				data.setIsSuccess(true);
				data.setMessage("短信添加成功");
			}else{
				data.setIsSuccess(false);
				data.setMessage("短信添加失败");
			}
			
		}
		
		return data;
	}

	@Override
	public List selectSmsIdOrSmsName(String idStr, String descr) {
		
		List list =null;
		if((idStr==null||"".equals(idStr))&&(descr==null||"".equals(descr))){
			list = smsMaper.pagingQuery(1, PageUtil.PAGEDATACOUNT);
		}else{
		try {
		    list = smsMaper.selectSmsIdOrSmsName(idStr, descr);
		} catch (NumberFormatException e) {
		    e.printStackTrace();
		}}
		return list;
	}

	@Override
	public SmsSettingDao selectById(String id) {
		// 需要做一下id是否为数字的验证
		return smsMaper.selectById(id);
	}

	@Override
	public DataResult updateSms(SmsSettingDao smsDao) {
		DataResult data = new DataResult();
		int updateEmail = smsMaper.updateSms(smsDao);
		if(updateEmail>0){
			data.setIsSuccess(true);
			data.setMessage("修改成功");
		}else{
			data.setIsSuccess(false);
			data.setMessage("修改失败,请重新修改");
		}
		return data;
	}

	@Override
	public DataResult verificationId(String idStr) {
		DataResult data = new DataResult();
		try {
	    int id = Integer.parseInt(idStr);
	    id = smsMaper.verificationId(id);
	    if(id>0){
	    	data.setIsSuccess(true);
	    	data.setMessage("已存在该ID数据");
	    }else{
	    	data.setIsSuccess(false);
			data.setMessage("不存在该ID数据");
	    }
		} catch (NumberFormatException e) {
		    e.printStackTrace();
		}
		return data;
	}

	@Override
	public List selectSmsAppAll() {
		// TODO Auto-generated method stub
		return smsApp.selectAllSmsApp();
	}

	@Override
	public List selectSmsTypeAll() {
		// TODO Auto-generated method stub
		return smsGroup.selectAllSmsGroup();
	}
	

}

controller
package com.example.messageCenter.controller;

import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.example.messageCenter.dataResult.DataResult;
import com.example.messageCenter.entity.EdmSettingDao;
import com.example.messageCenter.service.EdmSettingService;
import com.example.messageCenter.util.LoginUtil;
import com.example.messageCenter.util.PageUtil;

/**
 * 邮件列表controller
 * @author xzs
 *
 */
@Controller
@RequestMapping("/email")
public class EdmSettingController {
	
	@Autowired
	private EdmSettingService emailList;

	@RequestMapping("/emaillist")
	public String toEmailList(HttpServletRequest httpRequest,HashMap map){
		String currentPageStr = httpRequest.getParameter("currentPage");
		int sqlDataCount = emailList.countSqlData();
		int pageCount = emailList.returnCountPage();
		int currentPage =1;//默认当前页为1
		if(currentPageStr==null){
			currentPage =1;
		}else{
			currentPage=PageUtil.pagingLogic(currentPageStr, pageCount);
		}
		
		boolean session = LoginUtil.getSession(httpRequest);
		if(session){
			List selectAllS = emailList.pagingQuery(currentPage);
			
			
			map.put("currentPage", currentPage);
			map.put("sqlDataCount", sqlDataCount);
			map.put("pageCount", pageCount);
			map.put("emailList", selectAllS);
			
			return "/emaillist/index";
		}else{//未登录
			return "/public/login";
		}
		
		
		
	}
	/**
	 * 跳转到添加邮件页面
	 * @param httpRequest
	 * @param map
	 * @return
	 */
	@RequestMapping("/addEmailPage")
	public String addEmailPage(HttpServletRequest httpRequest,HashMap map){
		boolean session = LoginUtil.getSession(httpRequest);
		if(session){
			
			return "/emaillist/add";
		}else{//未登录
			return "/public/login";
		}
		
	}
	/**
	 * 添加邮件
	 * @param emailListDao
	 * @param httpRequest
	 * @return
	 */
	@RequestMapping(value = "/addEmail", method = RequestMethod.POST)
	@ResponseBody
	public DataResult addEmail(EdmSettingDao emailListDao,HttpServletRequest httpRequest){
		DataResult insertEmail = new DataResult();
		boolean session = LoginUtil.getSession(httpRequest);
		if(session){
			insertEmail = emailList.insertEmail(emailListDao);
			//System.out.println(insertEmail);
			return insertEmail;
		}else{//未登录
			insertEmail.setData(false);
			insertEmail.setIsSuccess(false);
			insertEmail.setMessage("请重新登录");
			return insertEmail;
		}
	
		
	}
	
	@RequestMapping("/selectEmail")
	public String selectEmail(HttpServletRequest httpRequest,HashMap map){
		String idStr = httpRequest.getParameter("id");
		String descr = httpRequest.getParameter("descr");
		

		
		boolean session = LoginUtil.getSession(httpRequest);
		if(session){
			List selectAllS = emailList.selectEmailIdOrEmailName(idStr, descr);
			map.put("idStr", idStr);
			map.put("descr", descr);
			map.put("currentPage", 1);
			map.put("sqlDataCount", selectAllS.size());
			map.put("pageCount", 1);
			map.put("emailList", selectAllS);
			
			return "/emaillist/index";
		}else{//未登录
			return "/public/login";
		}
		
		
		
	}
	/**
	 * 查看或修改
	 * @param httpRequest
	 * @param map
	 * @return
	 */
	@RequestMapping("/selectById")
	public String selectById(HttpServletRequest httpRequest,HashMap map){
		String idStr = httpRequest.getParameter("id");
		String currentPage = httpRequest.getParameter("currentPage");
		

		
		boolean session = LoginUtil.getSession(httpRequest);
		if(session){
			EdmSettingDao emailDao = emailList.selectById(idStr);
			//System.out.println(emailDao.toString());
			//把当前页传递过去,返回列表时好定位
			map.put("currentPage", currentPage);
			map.put("emailDao", emailDao);
			
			return "/emaillist/edit";
		}else{//未登录
			return "/public/login";
		}
		
		
		
	}
	
	/**
	 * 添加邮件
	 * @param emailListDao
	 * @param httpRequest
	 * @return
	 */
	@RequestMapping(value = "/updateEmail", method = RequestMethod.POST)
	@ResponseBody
	public DataResult updateEmail(EdmSettingDao emailListDao,HttpServletRequest httpRequest){
		DataResult insertEmail = new DataResult();
		boolean session = LoginUtil.getSession(httpRequest);
		if(session){
			//System.out.println("修改:"+emailListDao);
			insertEmail = emailList.updateEmail(emailListDao);
			
			return insertEmail;
		}else{//未登录
			insertEmail.setData(false);
			insertEmail.setIsSuccess(false);
			insertEmail.setMessage("请重新登录");
			return insertEmail;
		}
	
		
	}
	
	/**
	 * 添加邮件
	 * @param emailListDao
	 * @param httpRequest
	 * @return
	 */
	@RequestMapping(value = "/verificationId")
	@ResponseBody
	public DataResult verificationId(HttpServletRequest httpRequest){
		DataResult insertEmail = new DataResult();
		boolean session = LoginUtil.getSession(httpRequest);
		if(session){
			//System.out.println("修改:"+emailListDao);
			String idStr = httpRequest.getParameter("id");
					System.out.println("idStr="+idStr);
			insertEmail = emailList.verificationId(idStr);
			System.out.println(insertEmail.toString());
			return insertEmail;
		}else{//未登录
			insertEmail.setData(false);
			insertEmail.setIsSuccess(false);
			insertEmail.setMessage("请重新登录");
			return insertEmail;
		}
	
		
	}
	
	
}




你可能感兴趣的:(初涉SpringBoot— 消息系统项目总结)