十五、项目集成MyBatis Plus

MyBatis Plus是MyBatis功能增强ORM框架,完全兼容MyBatis,优点是编程简化,提供一些预定义的方法,可以直接使用;缺点是每一实体类都需要提供一套Mapper,Service,多表关联操作还需要使用Mybatis。

编程步骤如下:

一,修改POM依赖

去掉Mybatis依赖,添加Mybatis-plus依赖

       <!--
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatisplus-spring-boot-starter</artifactId>
            <version>1.0.5</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>2.1.8</version>
        </dependency>
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper</artifactId>
			<version>3.4.5</version>
		</dependency>

二、修改SpringBoot配置文件

添加Mybatis-plus的配置

#Mybatis实体类配置    
#mybatis.mapper-locations=classpath:mapper/*.xml

#MybatisPlus实体类配置   
mybatis-plus.mapper-locations=classpath:/mapper/*.xml

三、定义SQL

create table gf_expense(id varchar(32),
	name varchar(100),
	company varchar(100),
	bank varchar(100),
	bankaccount varchar(100),
	amount decimal(10,2),
	userId varchar(100)
);

四、定义实体类ExpenseInfo

注意需要使用注解表明对应的数据库表名,主键字段,非数据库字段

package com.gf.model;

import java.io.Serializable;
import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;

@TableName("gf_expense")
public class ExpenseInfo implements Serializable{
	@TableId
	private String id = null;
	private String name = null;
	private String company = null;
	private String bank = null;
	private String bankAccount = null;
	private BigDecimal amount = null;
	private String userId = null;
	@TableField(exist=false)
	private String userName = null;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCompany() {
		return company;
	}
	public void setCompany(String company) {
		this.company = company;
	}
	public String getBank() {
		return bank;
	}
	public void setBank(String bank) {
		this.bank = bank;
	}
	public String getBankAccount() {
		return bankAccount;
	}
	public void setBankAccount(String bankAccount) {
		this.bankAccount = bankAccount;
	}
	public BigDecimal getAmount() {
		return amount;
	}
	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}	
}

五、Mapper.xml

定义一个空的Mapper.xml,如果需要自定义数据库操作或多表关联查询,可以向Mybatis那样定义方法,如果不定义任何方法,Mybatis-plus提供默认操作单表的所有方法。

<?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="com.gf.mapper.ExpenseMapper">

</mapper>

六、定义Mapper接口

package com.gf.mapper;

import org.apache.ibatis.annotations.Mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.gf.model.ExpenseInfo;

@Mapper
public interface ExpenseMapper extends BaseMapper<ExpenseInfo>{

}

七、定义服务接口

package com.gf.service;

import com.baomidou.mybatisplus.service.IService;
import com.gf.model.ExpenseInfo;

public interface ExpenseService extends IService<ExpenseInfo>{

}

八、定义服务实现类

package com.gf.service.impl;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.gf.mapper.ExpenseMapper;
import com.gf.model.ExpenseInfo;
import com.gf.service.ExpenseService;

@Service
public class ExpenseServiceImpl extends ServiceImpl<ExpenseMapper,ExpenseInfo>
	implements ExpenseService
{

}

九、测试数据库操作

package com.gf;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.gf.model.ExpenseInfo;
import com.gf.model.FunctionInfo;
import com.gf.service.ExpenseService;
import com.gf.service.FunctionService;
import com.gf.statusflow.IOrg;
import com.gf.statusflow.IOrgModel;
import com.gf.statusflow.StatusFlowMng;
import com.gf.statusflow.StatusFlowWAPI;
import com.gf.statusflow.StatusMsg;
import com.gf.statusflow.UUID;
import com.gf.statusflow.def.DefWorkItem;

@RunWith(SpringRunner.class)
@SpringBootTest(classes=Starter.class)
public class Tester
{
	@Autowired
	private StatusFlowWAPI wapi;
	@Autowired
	private IOrgModel orgmodel;
	@Autowired
	private StatusFlowMng sfmng;
	@Autowired
	private ExpenseService exps;
	
    @Test
    public void testMethod()
    {
    	try
    	{
    		ExpenseInfo eps = new ExpenseInfo();
    		eps.setId(UUID.create("exps"));
    		eps.setName("Test");
    		eps.setBank("Bank");
    		eps.setBankAccount("0000");
    		eps.setUserId("1");
    		eps.setCompany("Hk");
    		eps.setAmount(new BigDecimal(1.22));
    		exps.insert(eps);
    		
    		Wrapper<ExpenseInfo> wrap = new EntityWrapper<ExpenseInfo>();
    		wrap.eq("bank","Bank").and("userid", "1");
    		List<ExpenseInfo> lst = exps.selectList(wrap);
    		for(ExpenseInfo ei:lst)
    		{
    			System.out.println("id==="+ei.getId());
    			System.out.println("name==="+ei.getName());
    			System.out.println("bank==="+ei.getBank());
    			System.out.println("bankAccount==="+ei.getBankAccount());
    			System.out.println("userId==="+ei.getUserId());
    		}
    		
    		/**
    		IOrg org = orgmodel.getOrgById("1");
    		System.out.println("org="+org);
    		
	    	String defProcessId = "testwf";//工作流模板名称
	    	String startUserId = "1";//流程实例启动用户
	    	userId = "1";//操作工作流实例当前用户
	    	String instanceId = "order1";//业务模块ID
	    	String type = "请假单";//流程类型,通常取流程模板名称
	    	String title = "UserA的请假单";//流程实例标题
	    	 nexttask = "account";//下一办理环节
	    	String url = "/holidayapply?id="+instanceId;//业务模块应用链接
	    	hmap = new HashMap();//工作流实例相关数据
	    	hmap.put("days", 5);
	    	String flag = "gf";//区分客户标识,每一个用户分配统一的标识
	    	String testMode = "no";//是否进入测试模式
	    	//wapi.startWorkflow(defProcessId, startUserId, userId, instanceId, type, title, nexttask, url, hmap, flag, testMode);
	    	nexttask = "draft";
	    	String instProcessId = "proc5bfe5bb88e25";//流程实例ID
	    	String instActivityId = "acti5bfea9d88e25";//流程Activity实例ID
	    	instWorkitemId=  "work5bfea9d98e25";//待办件实例ID
	    	List<String> userIdLst = new ArrayList<String>();
	    	userIdLst.add("2");//下一办理人
	    	//wapi.submitWorkflow(instProcessId, instActivityId, instWorkitemId, userIdLst, instanceId, type, title, nexttask, url, hmap, flag, testMode);
	    	
	    	//获取某用户办结件列表
	    	List lst = wapi.getWorkitemList("2", testMode);
	    	System.out.println("list="+lst);
	    	for(Iterator it=lst.iterator();it.hasNext();)
	    	{
	    		DefWorkItem dwi = (DefWorkItem)it.next();
	    		System.out.println("instProcessId="+dwi.getInstProcessId());
	    		System.out.println("instActivityId="+dwi.getInstActivityId());
	    		System.out.println("instWorkitem="+dwi.getId());
	    		System.out.println("title="+dwi.getTitle());
	    		System.out.println("url="+dwi.getUrl());
	    	}
	    	*/
	    }
    	catch(Exception e)
    	{
    		e.printStackTrace();
    	}
    }
}

猜你喜欢

转载自blog.csdn.net/qixiang_chen/article/details/85917965