mdc-parent/mdc-collect/src/main/java/cn/net/hx/mdc/listener/MdcListener.java
@@ -102,7 +102,7 @@ //mdcMachineOpcua = new MdcMachineOpcua(); //mdcMachineOpcua.setMachineId(machine.getId()); //machineOpcua = (MdcMachineOpcua)this.mdcMachineOpcuaMapper.selectOne(mdcMachineOpcua); QueryWrapper<MdcMachineOpcua> wp = Wrappers.emptyWrapper(); QueryWrapper<MdcMachineOpcua> wp = Wrappers.query();//.emptyWrapper(); wp.eq("machine_id", machine.getId()); machineOpcua = (MdcMachineOpcua)this.mdcMachineOpcuaMapper.selectOne(wp); this.executor.execute((Runnable)new OpcUaThread(machine, Integer.valueOf(this.mdcInterval), machineOpcua, mappers)); mdc-parent/mdc-show/mdcreportconfig.properties
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,2 @@ ureport.fileStoreDir=d:/mdc/ureportfiles #ureport.fileStoreDir=d:/mdc/rep mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/config/Ureport2Config.java
@@ -17,8 +17,9 @@ @Autowired private Environment env; private final String dirKey = "ureport.fileStoreDir"; @Bean //@Bean public UReportPropertyPlaceholderConfigurer a() { /* UReportPropertyPlaceholderConfigurer configurer = new UReportPropertyPlaceholderConfigurer(); String storeDir = env.getProperty(dirKey); @@ -28,8 +29,10 @@ configurer.setProperties(ps); } return configurer; */ return null; } @Override public void setEnvironment(Environment environment) { this.env = environment; mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/config/Ureport2DatasourceConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.qianwen.mdc.config; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import com.kacheyi.ureport.definition.datasource.BuildinDatasource; /** * é ç½®ureport使ç¨çå ç½®æ°æ®æº */ @Configuration public class Ureport2DatasourceConfig implements BuildinDatasource{ @Autowired private DataSource datasource; @Override public String name() { return "mdc"; } @Override public Connection getConnection() { try { return datasource.getConnection(); } catch (SQLException e) { throw new RuntimeException(e); } } } mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/controller/SysAccountController.java
@@ -19,6 +19,7 @@ import com.qianwen.mdc.common.OpResult; import com.qianwen.mdc.domain.DomainException; import com.qianwen.mdc.dto.SysAccountDTO; import com.qianwen.mdc.dto.sysaccount.UserData; import com.qianwen.mdc.service.sysaccount.AccountTokenService; import com.qianwen.mdc.service.sysaccount.SysAccountService; import com.qianwen.mdc.utils.redis.RedisUtil; @@ -46,7 +47,8 @@ * @param password å¯ç * @return 带token对çResult */ @RequestMapping(value = "/login", method = RequestMethod.POST) @RequestMapping(value = "/login1", method = RequestMethod.POST) public OpResult<String> userLogin(String username, String password) { String token = null; @@ -58,6 +60,18 @@ } } @RequestMapping(value = "/login", method = RequestMethod.POST) public OpResult<UserData> userLogin2(String username, String password) { try { UserData ud = accountService.login2(username, password); return OpResult.success(ud); }catch(DomainException e) { logger.error("ç»å½å¼å¸¸",e); return OpResult.fail(e.getMessage()); } } @GetMapping(value = "/currentUser") public OpResult<SysAccountDTO> currentUser(@RequestHeader(value = "mdc-token", defaultValue = "") String token) { mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/controller/account/MachineAccountAddController.java
@@ -44,137 +44,7 @@ @PostMapping(value = "/create") public OpResult<Void> create(@RequestHeader(value = "mdc-token", defaultValue = "") String token, @RequestBody MachineAccountEditDTO dto, HttpServletRequest request) { /* JSONObject jsonResult = new JSONObject(); jsonResult.put("result", "SUCCESS"); String machineName = request.getParameter("machineName"); String machineIp = request.getParameter("machineIp"); String workshop = request.getParameter("workshop"); String section = request.getParameter("section"); String userName = request.getParameter("userName"); String uuid = request.getParameter("uuid"); String specification = request.getParameter("specification"); String type = request.getParameter("type"); String category = request.getParameter("category"); String accountingAttribute = request.getParameter("accountingAttribute"); //å®è£ å°ç¹ // String location = request.getParameter("location"); String department = request.getParameter("department"); String state = request.getParameter("state"); //æ¯å¦å ³é®è®¾å¤ // String isCritical = request.getParameter("isCritical"); //æ¯å¦ç²¾å¯è®¾å¤ // String isPrecision = request.getParameter("isPrecision"); String elecCompFactor = request.getParameter("elecCompFactor"); String mechCompFactor = request.getParameter("mechCompFactor"); String country = request.getParameter("country"); String manufacturer = request.getParameter("manufacturer"); String productionDate = request.getParameter("productionDate"); String originalValue = request.getParameter("originalValue"); String presentValue = request.getParameter("presentValue"); String weight = request.getParameter("weight"); String pic = request.getParameter("pic"); String remark = request.getParameter("remark"); //çæ¬¡ String classes = request.getParameter("classes"); //设å¤ç®¡çåç±» String managType = request.getParameter("managType"); MdcWorkshop mdcWorkshopObj = new MdcWorkshop(); mdcWorkshopObj.setName(workshop); MdcWorkshop mdcWorkshop = mdcWorkshopMapper.selectOne(mdcWorkshopObj); if (mdcWorkshop != null) { mdcMachineObj.setWorkshopId(mdcWorkshop.getId()); } MdcSection mdcSectionObj = new MdcSection(); mdcSectionObj.setName(section); MdcSection mdcSection = mdcSectionMapper.selectOne(mdcSectionObj); if (mdcSection != null) { //mdcMachineObj.setSectionId(mdcSection.getId()); } MdcUser mdcUserObj = new MdcUser(); mdcUserObj.setName(userName); MdcUser mdcUser = mdcUserMapper.selectOne(mdcUserObj); if (mdcUser != null) { mdcMachineObj.setUserId(mdcUser.getId()); } MdcMachineAccount mdcMachineAccount = new MdcMachineAccount(); MdcMachine mdcMachine = mdcMachineMapper.selectOne(mdcMachineObj); if (mdcMachine != null) { mdcMachineAccount.setMachineId(mdcMachine.getId()); } mdcMachineAccount.setUuid(uuid); mdcMachineAccount.setSpecification(specification); mdcMachineAccount.setType(type); mdcMachineAccount.setCategory(category); mdcMachineAccount.setAccountingAttribute(accountingAttribute); // mdcMachineAccount.setLocation(location); mdcMachineAccount.setDepartment(department); mdcMachineAccount.setState(state); if ((elecCompFactor != null) && (!elecCompFactor.equals(""))) { mdcMachineAccount.setElecCompFactor(Integer.parseInt(elecCompFactor)); } else { mdcMachineAccount.setElecCompFactor(null); } if ((mechCompFactor != null) && (!mechCompFactor.equals(""))) { mdcMachineAccount.setMechCompFactor(Integer.parseInt(mechCompFactor)); } else { mdcMachineAccount.setMechCompFactor(null); } mdcMachineAccount.setCountry(country); mdcMachineAccount.setManufacturer(manufacturer); if ((originalValue != null) && (!originalValue.equals(""))) { mdcMachineAccount.setOriginalValue(Float.parseFloat(originalValue)); } if ((presentValue != null) && (!presentValue.equals(""))) { mdcMachineAccount.setPresentValue(Float.parseFloat(presentValue)); } if ((weight != null) && (!weight.equals(""))) { mdcMachineAccount.setWeight(Integer.parseInt(weight)); } if ((classes != null) && (!classes.equals(""))) { mdcMachineAccount.setClasses(classes); } if ((managType != null) && (!managType.equals(""))) { mdcMachineAccount.setManagType(managType); } mdcMachineAccount.setPic(pic); mdcMachineAccount.setRemark(remark); if (fileUpload != null) { StringBuilder sb = new StringBuilder(); for (MultipartFile file : fileUpload) { sb.append(uploadPath).append("/").append(mdcWorkshop.getName()).append("/").append(mdcSection.getName()) .append("/").append(mdcMachine.getName()).append("/").append(file.getName()); try { file.transferTo(new File(sb.toString())); } catch (IOException e) { e.printStackTrace(); } } } mdcMachineAccountMapper.insert(mdcMachineAccount); return jsonResult; */ try { //accountTokenService.checkToken(token); mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/domain/Menu.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,128 @@ package com.qianwen.mdc.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; /** * 工段 */ @TableName("menu") public class Menu{ /** * 龿¥ç±»åï¼å é¨å°å 1 */ public static int LINK_TYPE_PATH = 1; /** * 龿¥ç±»åï¼href 2 */ public static int LINK_TYPE_HREF = 2; @TableId(type=IdType.INPUT) private Integer id; private String label; /** * workshop id */ private Integer parentId; /** * 1:æ®éå é¨pathName;2:href */ private int linkType; private String url; /** * åæ° */ private String params; /** * 使ç¨è¯¥èå项çè§è²:ADMIN / USER */ private String useRole; private Integer orderNum; /** * ç¹æ®å¤çæ å¿ */ private String opFlag; public boolean isTypeHref() { return this.linkType == LINK_TYPE_HREF; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public Integer getParentId() { return parentId; } public void setParentId(Integer parentId) { this.parentId = parentId; } public int getLinkType() { return linkType; } public void setLinkType(int linkType) { this.linkType = linkType; } public String getUseRole() { return useRole; } public void setUseRole(String useRole) { this.useRole = useRole; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getParams() { return params; } public void setParams(String params) { this.params = params; } public Integer getOrderNum() { return orderNum; } public void setOrderNum(Integer orderNum) { this.orderNum = orderNum; } public String getOpFlag() { return opFlag; } public void setOpFlag(String opFlag) { this.opFlag = opFlag; } } mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/domain/SysAccount.java
@@ -10,6 +10,14 @@ @TableName("sys_account") public class SysAccount implements Serializable { /** * è§è²ï¼ç®¡çå */ public static final String ROLE_ADMIN = "ADMIN"; /** * è§è²ï¼æ®éç¨æ· */ public static final String ROLE_USER = "USER"; @TableId(type=IdType.AUTO) private Integer id; @@ -34,9 +42,9 @@ private String password; /** * user role * è§è²ä»£ç : ADMIN/USER */ //private String role; private String roleCode; /** * create time @@ -50,148 +58,60 @@ private static final long serialVersionUID = 1L; /** * è·åprimary key * * @return id - primary key */ public Integer getId() { return id; } /** * 设置primary key * * @param id primary key */ public void setId(Integer id) { this.id = id; } /** * è·åmdc user * * @return user - mdc user */ public String getUsername() { return username; } /** * 设置mdc user * * @param user mdc user */ public void setUsername(String username) { this.username = username; } /** * è·åuser name * * @return name - user name */ public String getName() { return name; } /** * 设置user name * * @param name user name */ public void setName(String name) { this.name = name; } /** * è·åphone number * * @return phone - phone number public String getPhone() { return phone; } */ /** * 设置phone number * * @param phone phone number public void setPhone(String phone) { this.phone = phone; } */ /** * è·åpassword * * @return password - password */ public String getPassword() { return password; } /** * 设置password * * @param password password */ public void setPassword(String password) { this.password = password; } /** * è·åuser role * * @return role - user role public String getRole() { return role; } */ /** * 设置user role * * @param role user role public void setRole(String role) { this.role = role; } */ /** * è·åcreate time * * @return ctime - create time */ public Date getCreateTime() { return createTime; } /** * 设置create time * * @param ctime create time */ public void setCreateTime(Date ctime) { this.createTime = ctime; } /** * è·ålast login time * * @return ltime - last login time */ public Date getLoginTime() { return loginTime; } /** * 设置last login time * * @param ltime last login time */ public void setLoginTime(Date ltime) { this.loginTime = ltime; } public String getRoleCode() { return roleCode; } public void setRoleCode(String roleCode) { this.roleCode = roleCode; } } mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/dto/sysaccount/UserData.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.qianwen.mdc.dto.sysaccount; import com.alibaba.fastjson.JSONArray; /** * ç»å½åè¿åç»ç¨æ·çæ°æ® */ public class UserData { private String token; private JSONArray userMenu; public String getToken() { return token; } public void setToken(String token) { this.token = token; } public JSONArray getUserMenu() { return userMenu; } public void setUserMenu(JSONArray userMenu) { this.userMenu = userMenu; } } mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/mapper/MenuMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.qianwen.mdc.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qianwen.mdc.domain.Menu; public interface MenuMapper extends BaseMapper<Menu> { List<Menu> list(Integer parentId); } mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/scheduled/DncProgFileParse.java
@@ -144,7 +144,7 @@ //List<MdcMachineStatus> list = mdcMachineStatusMapper.select(statusObj); QueryWrapper<MachineStatus> qw = Wrappers.emptyWrapper(); QueryWrapper<MachineStatus> qw = Wrappers.query();// qw.eq("machine_id", machine.getId()); List<MachineStatus> list = mdcMachineStatusMapper.selectList(qw); if ((list.size() == 0) || (list.get(0).getProgName() == null)) { @@ -211,7 +211,7 @@ List<DncProcessing> list = mdcDncProgParseMapper.select(progParse); */ QueryWrapper<DncProcessing> qw = Wrappers.emptyWrapper(); QueryWrapper<DncProcessing> qw = Wrappers.query(); qw.isNull("time"); List<DncProcessing> list = mdcDncProgParseMapper.selectList(qw); if (list.size() == 0) { mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/service/MdcDataArchiveService.java
@@ -87,7 +87,7 @@ RowBounds rowBounds = new RowBounds(0, 1); List<MdcMachineAccount> list = mdcMachineAccountMapper.selectByExampleAndRowBounds(accountExample, rowBounds); */ QueryWrapper<MachineAccount> wrapperAcc = Wrappers.emptyWrapper(); QueryWrapper<MachineAccount> wrapperAcc = Wrappers.query(); wrapperAcc.eq("machine_id", status.getMachineId()); wrapperAcc.orderByDesc("id"); mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/service/devicetype/DeviceTypeService.java
@@ -93,7 +93,7 @@ @Transactional(readOnly=true) public List<DeviceTypeDTO> allList() { QueryWrapper<DeviceType> qwp = Wrappers.emptyWrapper(); QueryWrapper<DeviceType> qwp = Wrappers.query(); qwp.eq("delete_flag", DeviceType.DELETE_FLAG_NOTREMOVED); return deviceTypeMapper.selectList(qwp).stream().map(dtype ->{ mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/service/sysaccount/AccountTokenService.java
@@ -30,11 +30,11 @@ //AccountToken mdcTokenObj = new AccountToken(); // mdcTokenObj.setToken(token); //AccountToken mdcToken = mdcTokenMapper.selectOne(mdcTokenObj); QueryWrapper<AccountToken> qw = Wrappers.emptyWrapper(); QueryWrapper<AccountToken> qw = Wrappers.query(); qw.eq("token", token); AccountToken tokenObj = accountTokenMapper.selectOne(qw); if(tokenObj == null) { throw new InvalidTokenExcepton("tokenæ æ"); throw new InvalidTokenExcepton("æ ætoken:"+token); } tokenObj.setExpireTime(genExpiredTime()); mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/service/sysaccount/SysAccountService.java
@@ -10,13 +10,20 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.mdc.domain.AccountToken; import com.qianwen.mdc.domain.Menu; import com.qianwen.mdc.domain.SysAccount; import com.qianwen.mdc.domain.workshop.Workshop; import com.qianwen.mdc.dto.SysAccountDTO; import com.qianwen.mdc.dto.sysaccount.UserData; import com.qianwen.mdc.mapper.AccountTokenMapper; import com.qianwen.mdc.mapper.MenuMapper; import com.qianwen.mdc.mapper.SysAccountMapper; import com.qianwen.mdc.mapper.WorkshopMapper; import com.qianwen.mdc.service.impl.MdcTokenServiceImpl; /** @@ -29,6 +36,10 @@ private SysAccountMapper sysAccountMapper; @Autowired private AccountTokenMapper accountTokenMapper; @Autowired private MenuMapper menuMapper; @Autowired private WorkshopMapper workshopMapper; //@Autowired //private AccountTokenService tokenService; private static final Logger logger = LoggerFactory.getLogger(SysAccountService.class); @@ -38,7 +49,7 @@ String token = null; QueryWrapper<SysAccount> qw = Wrappers.emptyWrapper(); QueryWrapper<SysAccount> qw = Wrappers.query(); qw.eq("username", username); SysAccount account = sysAccountMapper.selectOne(qw); //SysAccount mdcUser = mdcUserMapper.selectOne(mdcUserObj); @@ -78,11 +89,137 @@ return token; } @Transactional public UserData login2(String username, String password) { UserData ud = new UserData(); String token = null; QueryWrapper<SysAccount> qw = Wrappers.query(); qw.eq("username", username); SysAccount account = sysAccountMapper.selectOne(qw); //SysAccount mdcUser = mdcUserMapper.selectOne(mdcUserObj); logger.debug("user: {}", account); if (account == null) { throw new LoginFailExcepton("ç¨æ·ä¸åå¨"); } if (StringUtils.equals(account.getPassword(), password)) { AccountToken tokenObj = accountTokenMapper.getByUserId(account.getId()); if (tokenObj == null) { token = AccountTokenService.genToken(username); tokenObj = new AccountToken(); tokenObj.setUserId(account.getId()); tokenObj.setToken(token); tokenObj.setExpireTime(MdcTokenServiceImpl.genExpiredTime()); accountTokenMapper.insert(tokenObj); //jsonResult.put("token", mdcTokenObj.getToken()); } else { tokenObj.setExpireTime(MdcTokenServiceImpl.genExpiredTime()); //mdcTokenMapper.updateByPrimaryKey(mdcToken); accountTokenMapper.updateById(tokenObj); token = tokenObj.getToken(); } ud.setToken(token); ud.setUserMenu(generateUserMenu(account)); } else { throw new LoginFailExcepton("ç¨æ·å¯ç é误"); } return ud; } /** * çæç¨æ·èå * @param account * @return */ private JSONArray generateUserMenu(SysAccount account) { JSONArray menuData = new JSONArray(); String userRoleCode = account.getRoleCode();//"ADMIN";//account.getRole() List<Menu> menuList = menuMapper.list(null); for(Menu m : menuList) { if (userRoleCode.equals(SysAccount.ROLE_USER) && SysAccount.ROLE_ADMIN.equals(m.getUseRole())) { // å½åç¨æ·æ¯æ®éç¨æ·ï¼ä¸èåæéæ¯ç®¡çåçï¼ä¸ç»å端è¿å continue; } JSONObject item = buildMenuItem(m); JSONArray children = new JSONArray(); List<Menu> subList = menuMapper.list(m.getId()); for(Menu m2 : subList) { if (userRoleCode.equals(SysAccount.ROLE_USER) && SysAccount.ROLE_ADMIN.equals(m2.getUseRole())) { // å½åç¨æ·æ¯æ®éç¨æ·ï¼ä¸èåæéæ¯ç®¡çåçï¼ä¸ç»å端è¿å continue; } JSONObject item2 = buildMenuItem(m2); children.add(item2); } if("workshop".equals(m.getOpFlag())) { //å 载车é´å°å¾å表 QueryWrapper<Workshop> qw =Wrappers.query(); qw.orderByAsc("id"); List<Workshop> wsList = workshopMapper.selectList(qw); for(Workshop ws : wsList) { JSONObject wsitem = new JSONObject(); wsitem.put("label", ws.getName()); wsitem.put("pathName", "workshop"); JSONObject params = new JSONObject(); params.put("id", ws.getId()); wsitem.put("params", params); JSONObject query = new JSONObject(); query.put("name", ws.getName()); wsitem.put("query", query); children.add(wsitem); } } item.put("children", children); menuData.add(item); } return menuData; } private JSONObject buildMenuItem(Menu m) { JSONObject item = new JSONObject(); item.put("label", m.getLabel()); if(StringUtils.isNotEmpty(m.getUrl())) { if(m.isTypeHref()) { item.put("href", m.getUrl()); }else { item.put("pathName", m.getUrl()); } } if(StringUtils.isNotEmpty(m.getParams())) { item.put("params", JSONObject.parseObject(m.getParams())); } return item; } @Transactional(readOnly=true) public SysAccountDTO getUserByToken(String token) { QueryWrapper<AccountToken> w = Wrappers.emptyWrapper(); QueryWrapper<AccountToken> w = Wrappers.query(); w.eq("token", token); List<AccountToken> atlist = accountTokenMapper.selectList(w); mdc-parent/mdc-show/src/main/resources/context.xml
@@ -4,11 +4,11 @@ xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="classpath:ureport-console-context.xml" /> <!-- <!-- --> <bean id="propertyConfigurer" parent="ureport.props"> <property name="location"> <value>classpath:config.properties</value> <value>file:./mdcreportconfig.properties</value> </property> </bean> --> </beans> mdc-parent/mdc-show/src/main/resources/reportconfig.properties
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ ureport.fileStoreDir=d:/mdc/ureportfiles mdc-parent/mdc-showdb-mysql/src/main/resources/mapper/MachineMapper.xml
@@ -153,7 +153,7 @@ and acc.type=#{dto.type} </if> <if test="dto.transMode != null"> and a.transMode=#{dto.transMode} and a.trans_mode=#{dto.transMode} </if> <if test="dto.category != null and dto.category != ''"> and acc.category=#{dto.category} mdc-parent/mdc-showdb-mysql/src/main/resources/mapper/MenuMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ <?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.qianwen.mdc.mapper.MenuMapper"> <resultMap id="BaseResultMap" type="com.qianwen.mdc.domain.Menu"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="label" jdbcType="VARCHAR" property="label" /> <result column="use_role" jdbcType="VARCHAR" property="useRole" /> <result column="params" jdbcType="VARCHAR" property="params" /> <result column="link_type" jdbcType="INTEGER" property="linkType" /> <result column="url" jdbcType="VARCHAR" property="url" /> <result column="parent_id" jdbcType="INTEGER" property="parentId" /> <result column="order_num" jdbcType="INTEGER" property="orderNum" /> <result column="op_flag" jdbcType="VARCHAR" property="opFlag" /> </resultMap> <select id="list" resultMap="BaseResultMap"> SELECT id,label,use_role,params,link_type,url,params,parent_id,op_flag FROM menu <where> <if test="parentId != null"> and parent_id=#{parentId} </if> <if test="parentId == null"> and parent_id is null </if> </where> order by order_num </select> </mapper>