基于mybatis和springmvc框架的通用插入操作

列如对性别的插入(临时找的项目)

pojo

package cn.rccs.ssm.pojo;

import java.io.Serializable;

import org.apache.ibatis.type.Alias;

@Alias("Sex")
public class Sex implements Serializable{
    
    private int id;
    private String sex;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}



mapper.xml文件

<!-- 通用 插入 -->
    <insert id="insert" parameterType="map">
      ${sql}
    </insert>

mapper抽象类

/**
     * 插入操作
     * @param record
     * @return
     */
    int insert(HashMap<String, Object> record);

service类

/**
     * 通用添加操作
     * @param params
     * @param sqlTableName 数据表名
     * @return
     * @throws Exception
     */
     public  Boolean insert(Object params ,String sqlTableName) throws Exception {
         String sql = "insert " + sqlTableName + "(";
            //获取params类
            Class<?> cls = params.getClass();
            //获取类里面的(私有)成员变量
            Field[] fields = cls.getDeclaredFields();
            for (Field f : fields) {
                //获取私有成员第二步
                f.setAccessible(true);
                if (null == f.getAnnotation(NotInsert.class)) {
                    sql = sql + f.getName() +  ",";
                }
            }
            //去掉逗号
            sql =sql.substring(0, sql.length()-1);
            sql = sql + ") values(";
            for (Field f : fields) {
                f.setAccessible(true);
                if (null == f.getAnnotation(NotInsert.class)) {
                    //获取类型
                    if (f.getType().getSimpleName().equals("Integer")) {
                        //获取字段的值
                        if (f.get(params) == null) {
                            sql = sql + "'',";
                        } else {
                            sql = sql + f.get(params) + ",";
                        }
                    }  else { //就是string
                        sql = sql + "'" + f.get(params) + "',";
                    }
                }
            }
            //去掉逗号
            sql =sql.substring(0, sql.length()-1);
            sql = sql + ")";
            HashMap<String,Object> map =  new HashMap<String,Object>();
            map.put("sql", sql);
        
         SqlSession session = getBaseSession();
         ServiceDaoMapper mapper = session.getMapper(ServiceDaoMapper.class);
         boolean result = true;
         try {
            int count = mapper.insert(map);
            session.commit();
            if (count <= 0) {
                result = false;
            }
        } catch (Exception e) {
            e.printStackTrace();
            result = false;
        }finally {
            session.close();
        }
         return result;
     }

    

controller类

/**
     * 通用插入
     * @throws Exception
     */
    @Test
    public void eest() throws Exception{
    Sex s = new Sex();
    s.setId(3);
    s.setSex("变态");
    Boolean insert = ServiceDao.getInstance().insert(s, "sex");
    System.out.println(insert);
    }

结果截图


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值