- 浏览: 329223 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
xing0029:
这样配置的话 事物不成功啊 还有什么地方需要注意的么 可以加我 ...
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
mengqingyu:
liuxiaolu 写道jotm的我的没有成功,楼主能否帮助一 ...
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
liuxiaolu:
jotm的我的没有成功,楼主能否帮助一下
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
aptech406328627:
求解救,没弄好QQ:1053942353
Spring邮件发送(可带附件,模板,群发,异步发送等功能) -
ghpaas:
web可视化自定义表单推荐使用GForms开发平台(http: ...
在线表单设计器设计原理
1.基于map或javaBean的增删改查可实现不写dao接口和实现类以及xml,有效的提高开发速度。
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
<bean id="dynamicSqlSessionTemplate" class="com.mqy.mybatis.support.DynamicSqlSessionTemplate"> <property name="dataSource" ref="dataSource" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> <property name="convertNameProcessor"><bean class="com.mqy.mybatis.convert.DefaultConvertName"/></property><!-- 驼峰转下划线 --> <!--<property name="splitSign" value="," /> --> <!--批量操作的分隔符 选配--> <!--<property name="annotationProcessor" ref="annotationProcessorTest"/>--> <!--自定义注解实现策略 选配--> </bean> <!-- 定义MyBatis SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="plugins"> <array> <bean class="cn.com.framework.orm.mybatis.interceptor.PagingInterceptor"> <property name="dialect"> <bean class="cn.com.framework.orm.mybatis.dialect.PostgreSQL81Dialect" /> </property> </bean> </array> </property> <property name="mapperLocations"> <list> <value>classpath*:com/mqy/mybatis/EasyMapper.xml</value> </list> </property> </bean>
package com.fw.mybatis; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.transaction.annotation.Transactional; import com.fw.mybatis.constant.JdbcConstants; import com.fw.mybatis.support.DynamicSqlSessionTemplate; import com.fw.web.core.acl.model.User; import com.fw.web.core.base.util.WebContextUtils; /** * 功能:</b>通用增删改测试类<br> */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:applicationContext-core.xml", "classpath:applicationContext-datasource.xml"}) @Transactional @TransactionConfiguration(transactionManager = "transactionAdvice", defaultRollback = false) public class JdbcManageUtilTest{ private final static Logger logger = LoggerFactory.getLogger(JdbcManageUtilTest.class); @Autowired private ApplicationContext ctx; DynamicSqlSessionTemplate dynamicSqlSessionTemplate; @Before public void init(){ logger.debug("模块初始化开始..."); // String[] xmlCfg = new String[] { "classpath:applicationContext-core.xml", "classpath:applicationContext-datasource.xml"}; // WebContextUtils.setAc(new ClassPathXmlApplicationContext(xmlCfg)); WebContextUtils.setAc(ctx); dynamicSqlSessionTemplate = (DynamicSqlSessionTemplate)WebContextUtils.getAc().getBean("dynamicSqlSessionTemplate"); } /** * <b>功能描述:</b>map插入单条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testInsertMap(){ Map<String, Object> pojoMap = new HashMap<>(); pojoMap.put(JdbcConstants.TABLE_NAME, "acl_user"); pojoMap.put("id", Math.round(Math.random() * 1000)+""); pojoMap.put(JdbcConstants.KEY, "id");//如果列名称是id可以不加入此行代码 pojoMap.put("username", "abc"); dynamicSqlSessionTemplate.insert(pojoMap); } /** * <b>功能描述:</b>bean插入单条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testInsertBean(){ User User = new User(); User.setId(Math.round(Math.random() * 1000)+""); User.setUsername("222"); dynamicSqlSessionTemplate.insert(User); } /** * <b>功能描述:</b>批量map或bean插入多条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testInsertBatch(){ List<Object> pojoList = new ArrayList<>(); for (int i = 0; i < 3; i++) { Map<String, Object> pojoMap = new HashMap<>(); pojoMap.put(JdbcConstants.TABLE_NAME, "acl_user"); pojoMap.put("id", Math.round(Math.random() * 1000)); pojoMap.put(JdbcConstants.KEY, "id"); pojoMap.put("abc", 333); pojoList.add(pojoMap); } dynamicSqlSessionTemplate.insertBatch(pojoList); pojoList = new ArrayList<>(); for (int i = 0; i < 3; i++) { User user = new User(); user.setId(Math.round(Math.random() * 1000)+""); user.setUsername("abc"); pojoList.add(user); } dynamicSqlSessionTemplate.insertBatch(pojoList); } /** * <b>功能描述:</b>map修改单条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testUpdateMap(){ Map<String, Object> params = new HashMap<>(); params.put("username", "111"); List<Map<String, Object>> paramList = dynamicSqlSessionTemplate.select("framework.selectMap", params); for(Map<String, Object> pojoMap:paramList){ params.put(JdbcConstants.TABLE_NAME, "acl_user"); params.put(JdbcConstants.ID, pojoMap.get(JdbcConstants.ID)); dynamicSqlSessionTemplate.update(params); } } /** * <b>功能描述:</b>bean修改单条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testUpdateBean(){ User User = new User(); User.setUsername("111"); List<User> UserList = dynamicSqlSessionTemplate.select("framework.selectBean", User); for(User test:UserList){ test.setUsername("abc"); dynamicSqlSessionTemplate.update(test); } } /** * <b>功能描述:</b>map删除单条或多条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testDeleteMap(){ Map<String, Object> params = new HashMap<>(); params.put("username", "333"); String value = ""; List<Map<String, Object>> paramList = dynamicSqlSessionTemplate.select("framework.selectMap", params); for(Map<String, Object> pojoMap:paramList){ params.put(JdbcConstants.TABLE_NAME, "acl_user"); value = value + "," + pojoMap.get(JdbcConstants.ID); } params.remove("username"); params.put(JdbcConstants.TABLE_NAME, "acl_user"); params.put(JdbcConstants.ID, value.replaceFirst(",", "")); dynamicSqlSessionTemplate.delete(params); } /** * <b>功能描述:</b>map查询单条或多条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testSelectMap(){ Map<String, Object> params = new HashMap<>(); params.put("username", "111"); List<Map<String, Object>> paramList = dynamicSqlSessionTemplate.select("framework.selectMap", params); for(Map<String, Object> pojoMap:paramList){ System.out.println("testSelectMap:"+pojoMap); } } /** * <b>功能描述:</b>bean查询单条记录<br> * 20140826 | | 创建方法</li> */ @Test public void testSelectBean(){ User user = new User(); user.setUsername("abc"); List<User> UserList = dynamicSqlSessionTemplate.select("framework.selectBean", user); for(User u:UserList){ System.out.println("testSelectBean:"+u.getUsername()); } } @Test public void testSelectOne(){ User bbiTest = dynamicSqlSessionTemplate.load(User.class, "174"); System.out.println(bbiTest); } } package com.fw.web.core.acl.model; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Table; import com.mqy.mybatis.annotation.Generate; import com.mqy.mybatis.annotation.NotRepeat; import com.fw.mybatis.constant.GenerateType; /** * 基于EasyMybatis的javaBean支持注解 */ @Table(name="acl_user") public class User implements Serializable{ private static final long serialVersionUID = 5044173991416581564L; @Id @Generate(type=GenerateType.AUTO,lenght=2) //主键生成策略,括号中内容可不写 @Column(name="id")//可选 private String id; @NotRepeat //验证重复 private String username; private Date createTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } } package com.fw.mybatis; import java.util.Map; import com.mqy.mybatis.annotation.AnnotationProcessor; import com.mqy.mybatis.annotation.bean.GenerateObject; import com.mqy.mybatis.annotation.bean.NotRepeatObject; import com.fw.mybatis.constant.GenerateType; /** * 功能:主键列生成策略、列重复判断实现类 */ public class AnnotationProcessorTest implements AnnotationProcessor { @Override public Object generate(GenerateObject generate) { Object obj = null; if(GenerateType.AUTO.equals(generate.getType())) { } else if (GenerateType.CHECK.equals(generate.getType())) { } else if (GenerateType.CHECK_PARAMS.equals(generate.getType())) { } else if (GenerateType.PREFIX.equals(generate.getType())) { } return obj; } /** * <b>功能描述:</b>校验名称是否重复<br> * @param {String} tableName 表名称 * @param {String} ckeckColumeName 校验列 * @param {String} ckeckColumeValue 校验列值 * @param {String} queryColumeName 筛选列 * @param {Object} queryColumeValue 筛选列值 * @return 响应结果 */ @Override public RuntimeException notRepeat(NotRepeatObject notRepeat) { Map<String, Object> params = new HashMap<>(); String value = notRepeat.getColumnValue().toString(); params.put("tableName", notRepeat.getTableName()); params.put("ckeckColumeName", notRepeat.getColumnName()); params.put("ckeckColumeValue", value); if("".equals(value)) {//为空时不做重复效验 return null; } List<Map<String, Object>> resultList = commonMapper.checkRepeatName(params); if(resultList!=null&&(!resultList.isEmpty())){ Map<String, Object> resultMap = resultList.get(0); Object delflg = resultMap.get("delflg"); if(notRepeat.getId()==null) {//新建 if(delflg!=null) { if(Archive.DELFLG_RECYCLE==Integer.parseInt(delflg.toString())){//回收站判断重复 return new ModelValidateException(String.format("代码与回收站中档案[%s]重复", value)); } } return new ModelValidateException(String.format("代码与现有档案[%s]重复", value)); } else {//修改 Object id = resultMap.get(notRepeat.getKey()); if(id!=null&&(!id.toString().equals(notRepeat.getId().toString()))) { if(delflg!=null) { if(Archive.DELFLG_RECYCLE==Integer.parseInt(delflg.toString())){//回收站判断重复 return new ModelValidateException(String.format("代码与回收站中档案[%s]重复", value)); } } return new ModelValidateException(String.format("代码与现有档案[%s]重复", value)); } } } return null; } }
- mybatis-easy-v1.0.6.jar (32.2 KB)
- 下载次数: 8
发表评论
-
S2SH读取XML扩展点
2014-07-27 01:39 686由于struts2、hibernate通过默认配置文件不支持通 ... -
导出Word、Excel、PPT通用功能设计思路
2014-03-07 16:25 1810工作中经常 ... -
HttpClient抓取解析网站支持多种验证方式
2014-03-06 10:10 1402工作中遇到了抓取多个项目数据并且有多种验证方式包括Http标准 ... -
Tomcat架构分析及性能调优
2014-02-16 17:59 3190一.Tomcat容器层级结构 分为四个等级,由四个子容器组成 ... -
基于FLEX,MINA消息推送核心代码
2013-10-21 16:15 1693import java.util.List; impor ... -
(转载)拦截器与过滤器的区别
2013-05-10 15:36 998拦截器与过滤器的区别 : 1.拦截器是基于java的反射机制 ... -
(转载)Struts中默认的拦截器栈
2013-05-10 13:19 5043Struts中默认的拦截器栈 ... -
Java并发模式
2013-04-02 12:58 2238在公司做培训时用到,顺便在这里做个总结。 1.生产者消费者模式 ... -
海量数据、高并发优化方案
2013-03-16 18:53 8474一.应用服务器负载均衡 1.链路负载均衡 通过DNS解析域 ... -
Lucene 详解
2013-03-01 11:10 14931.什么是全文检索 对于搜索,按被搜索的资源类 ... -
Spring JDBC批量操作
2013-01-20 02:51 271、使用JdbcTemplate进行批 ... -
集成JBPM3,实现流程流转
2012-11-29 16:48 2116集成JBPM到OA系统,并实现JbpmFacade接口 - ... -
Spring MVC 文件上传
2010-03-23 16:45 1124MultipartHttpServletRequest mul ... -
导出Excel(jxl)
2009-08-05 09:15 526Action代码: import java.io.IOExce ... -
Hibernate笔记(常用技术)
2009-07-21 17:13 2130一.对象关系映射基础 1.hibernate对象属性映射 ...
相关推荐
Mybatis通用增删改查 有基础的DaoImpl
mybatis实现增删改查;
plus 增删改查模板mybatis_plus 增删改查模板mybatis_plus 增删改查模板mybatis_plus 增删改查模板mybatis_plus 增删改查模板mybatis_plus 增删改查模板mybatis_plus 增删改查模板mybatis_plus 增删改查模板mybatis_...
使用Mybatis实现增删改查
mybatis3 增删改查基本操作 例子
MybatisDemo增删改查.rar
mybatis增删改查基础jar包
Mybatis基本应用实现增删改查
mybatis实现增删改查Java项目,适合用于熟悉mybatis原理及流程学习。
微信小程序+springboot+mybatis实现增删改查(微信小程序端).rar
SpringBoot+mybatis+Maven+mysql脚本增删改查完整源码,
mybatis实现增删改查的javaproject
maven、spring、spring mvc、mybatis 整合实现ssm通用增删改查基础开发框架.maven、spring、spring mvc、mybatis 整合实现ssm通用增删改查基础开发框架.maven、spring、spring mvc、mybatis 整合实现ssm通用增删改查...
mybatis基本增删改查实现,项目是maven构建。导入maven项目即可,test目录下是对增删改查的测试。数据库用的mysql。
MyBatis 基于注解的增删改查示例程序,使用Spring的IOC机制注入,降低程序间的耦合性
myeclipse下用SSM框架实现的增删改查,数据库为mysql,有操作文档,便于理解,方便初学者直接运行代码去学习
包括mybatis的增删改查demo以及mybatis的jar包
spring boot mybatis js前端展示对mysql增删改查,web页面很一般,下载者可以自行增加页面布局与样式,也给刚入门spring boot 的网友以工dome
使用Mybatis完成基本的之增删改查操作。
SpringBoot整合MyBatis Plus实现增删改查教程