Mars-java 发布 2.1.7 版本
此次更新如下: 优化了代码结构,性能更高效 mars-jdbc升级,单表操作不需要写sql,不需要用配置或者注解映射,直接一句注解搞定 JdbcTemplete优化升级,支持分页查询,sql参数使用占位符,避免了字符串拼接带来的sql注入风险 mars-cloud 为了配合mars-jdbc的升级,所以发行了一个版本 Mars-jdbc用法 dao 建议用抽象类 的形式创建,这样单表操作可以用抽象方法,多表操作可以自己写sql。 加上MarsDao注解,如下图所示: @MarsDao("testDao") public abstract class TestDao { } 单表操作 根据主键查询一条数据 @MarsGet(tableName = "userinfo",primaryKey = "id") public abstract Map<String,Object> selectById(int id); 如上面的示例所示,在抽象方法上加上MarsGet注解即可 tableName:要从哪张表里的查询 primarkey:主键字段名 方法的参数:要查主键是什么的数据就传什么 根据主键更新数据 @MarsUpdate(tableName = "userinfo",operType = OperType.UPDATE,primaryKey = "id") public abstract int update(DemoEntity demoEntity); 如上面的示例所示,在抽象方法上加上MarsUpdate注解即可 tableName:要更新哪张表 primarkey:主键字段名 operType:设置操作方式为update 方法的参数:任意自定义实体对象或者map,对象的字段要跟数据库表的字段名一致 插入一条数据 @MarsUpdate(tableName = "userinfo",operType = OperType.INSERT) public abstract int insert(DemoEntity demoEntity); 如上面的示例所示,在抽象方法上加上MarsUpdate注解即可 tableName:要插入哪张表 operType:设置操作方式为insert 方法的参数:任意自定义实体对象或者map,对象的字段要跟数据库表的字段名一致 根据主键删除一条数据 @MarsUpdate(tableName = "userinfo",operType = OperType.DELETE,primaryKey = "id") public abstract int delete(int id); 如上面的示例所示,在抽象方法上加上MarsUpdate注解即可 tableName:要从哪张表删除 primarkey:主键字段名 operType:设置操作方式为delete 方法的参数:要删除主键是什么值的数据就传什么 多表操作 sql语句固定 @MarsSelect(sql = "select * from userinfo where name = #{name} and age = ${age}") public abstract List<Map<String,Object>> selectList(DemoEntity demoEntity); 如上面的示例所示,在抽象方法上加上MarsSelect注解即可 sql:sql语句 方法的参数:任意自定义实体对象或者map,对象的字段要跟sql中的占位符一致(不包含#{}) sql语句不固定(需要根据条件判断,来动态的拼接语句) 这种情况需要使用JdbcTemplete: 在代码里去拼sql,sql拼好以后用下面所示的方式执行 sql中的参数一样用#{}或者${}来占位 JdbcTemplete.get("数据源名称,不传自动使用默认数据源").selectList(sql,DemoEntity.class); JdbcTemplete.get("数据源名称,不传自动使用默认数据源").update(sql,demoEntity); JdbcTemplete 这里就不多说了,实际使用的时候,开发环境的自动补全功能会自动弹出里面的方法,选择适合自己的就行了 分页查询 使用JdbcTemplete里的selectPageList public PageModel<DemoEntity> findPage(PageParamModel pageParamModel) throws Exception { String sql = "select * from userinfo where name like #{name}"; return JdbcTemplete.get().selectPageList(sql,pageParamModel,DemoEntity.class); } 参数必须传PageParamModel,返回类型也必须是PageModel 占位符解释 #{name}: 这种占位符会被替换成 ? 没有sql注入的风险 ${name}: 这种占位符是字符串拼接,有sql注入的风险 选择数据源 dao层的方法上 可以用 DataSource(name=”数据源name”) 注解 去指定要用的数据源,如果只有一个数据源,则不需要指定 具体可看官网:http://mars-framework.com