内容简介:此次更新如下: 优化了代码结构,性能更高效 mars-jdbc升级,单表操作不需要写sql,不需要用配置或者注解映射,直接一句注解搞定 JdbcTemplete优化升级,支持分页查询,sql参数使用占位符,避免了字符串拼接带来的...
此次更新如下:
- 优化了代码结构,性能更高效
- 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Parsing Techniques
Dick Grune、Ceriel J.H. Jacobs / Springer / 2010-2-12 / USD 109.00
This second edition of Grune and Jacobs' brilliant work presents new developments and discoveries that have been made in the field. Parsing, also referred to as syntax analysis, has been and continues......一起来看看 《Parsing Techniques》 这本书的介绍吧!