activity自定义增删查改

本文介绍了如何通过流程引擎获取MyBatis的SqlSessionFactory,以实现增删查改数据库操作,包括获取对象、执行SQL和异常处理。重点展示了IAddNodeDto接口的映射与代理对象的使用。
摘要由CSDN通过智能技术生成

前言

通过流程引擎获取MyBatis对象SqlSessionFactory,进而对数据库进行增删查改。


一、通过MyBatis操作数据库

public void updateStatus(String processInstanceId) {
        // 1、获取流程引擎 http://t.zoukankan.com/tian830937-p-6646963.html
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration();
        // 2、获取MyBatis对象SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = processEngineConfiguration.getSqlSessionFactory();
        if (!sqlSessionFactory.getConfiguration().hasMapper(IAddNodeDto.class)) {
            sqlSessionFactory.getConfiguration().addMapper(IAddNodeDto.class);
        }

        // 3、获取MyBatis对象SqlSession,对数据库进行操作
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            // 4、使用SqlSession创建Dao接口的代理对象
            IAddNodeDto cm = sqlSession.getMapper(IAddNodeDto.class);

            ///5、使用代理对象执行方法
            List<ActAddNode> selectList = cm.findByProcessInstanceId(processInstanceId);
            if (CollectionUtils.isEmpty(selectList)) return;

            log.info("自定义表存在动态节点,更新状态");
            cm.updateState(processInstanceId);
        } catch (Exception e) {
            log.error("更新添加节点存在异常:{}", e.getMessage());
            e.printStackTrace();
        } finally {
            // 6、释放资源
            sqlSession.commit();
            sqlSession.close();
        }
    }

二、IAddNodeDto 代理对象内容

代码如下(示例):

public interface IAddNodeDto{

    @Select("select * from act_add_node where STATE_=0 ")
    @Results({
        @Result(property = "id", column = "ID"),
        @Result(property = "processDefinitionId", column = "PROCESS_DEFINITION_ID"),
        @Result(property = "doUserId", column = "DOUSERID"),
        @Result(property = "actId", column = "ACT_ID"),
        @Result(property = "processInstanceId", column = "PROCESS_INSTANCE_ID"),
        @Result(property = "processText", column = "PROPERTIES_TEXT"),
        @Result(property = "state", column = "STATE_"),
    })
    List<ActAddNode> find();

    @Insert("insert into act_add_node(ID, PROCESS_DEFINITION_ID, PROCESS_INSTANCE_ID,PROPERTIES_TEXT,CREATE_TIME) values(#{id}, #{processDefinitionId}, #{processInstanceId}, #{processText},now())")
    void insert(ActAddNode actAddNode);

    @Delete("delete from act_add_node where PROCESS_INSTANCE_ID=#{processInstanceId}")
    void delete(String processInstanceId);

    @Update("update act_add_node set STATE_ = 1 where STATE_=0 and  PROCESS_INSTANCE_ID=#{processInstanceId}")
    void updateState(String processInstanceId);

    @Select("select ID from act_add_node where STATE_=0 and  PROCESS_INSTANCE_ID=#{processInstanceId}")
    @Results({
        @Result(property = "id", column = "ID")
    })
    List<ActAddNode> findByProcessInstanceId(String processInstanceId);
}


如果你对工作流感兴趣,想了解更多,请点击
[Java工作流管理系统(activity6.0)](https://blog.csdn.net/weixin_43830468/article/details/124060036?spm=1001.2014.3001.5502)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Android Studio数据库增删查改的示例代码: 1. 首先,在你的项目中创建一个DatabaseHelper类,继承自SQLiteOpenHelper。 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; //构造方法 public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE IF NOT EXISTS student(" + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name VARCHAR, " + "age INTEGER, " + "gender VARCHAR)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS student"; db.execSQL(sql); onCreate(db); } } ``` 2. 创建一个数据访问类StudentDAO,封装增删查改操作。 ```java public class StudentDAO { private static final String TABLE_NAME = "student"; //插入数据 public static long insert(Context context, ContentValues values) { DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); long id = db.insert(TABLE_NAME, null, values); db.close(); return id; } //删除数据 public static int delete(Context context, String whereClause, String[] whereArgs) { DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); int count = db.delete(TABLE_NAME, whereClause, whereArgs); db.close(); return count; } //更新数据 public static int update(Context context, ContentValues values, String whereClause, String[] whereArgs) { DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); int count = db.update(TABLE_NAME, values, whereClause, whereArgs); db.close(); return count; } //查询数据 public static List<Student> query(Context context, String selection, String[] selectionArgs) { List<Student> list = new ArrayList<>(); DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, null, selection, selectionArgs, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("_id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); String gender = cursor.getString(cursor.getColumnIndex("gender")); Student student = new Student(id, name, age, gender); list.add(student); } cursor.close(); db.close(); return list; } } ``` 3. 在你的Activity中使用StudentDAO类进行增删查改操作。 ```java //插入数据 ContentValues values = new ContentValues(); values.put("name", "张三"); values.put("age", 18); values.put("gender", "男"); long id = StudentDAO.insert(this, values); //删除数据 String whereClause = "name=?"; String[] whereArgs = {"张三"}; int count = StudentDAO.delete(this, whereClause, whereArgs); //更新数据 ContentValues values = new ContentValues(); values.put("name", "李四"); String whereClause = "name=?"; String[] whereArgs = {"张三"}; int count = StudentDAO.update(this, values, whereClause, whereArgs); //查询数据 String selection = "age=?"; String[] selectionArgs = {"18"}; List<Student> list = StudentDAO.query(this, selection, selectionArgs); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值