mybatis对象化封装,去XML,去SQL编写,提供CRUD操作

9 篇文章 0 订阅
4 篇文章 0 订阅

mybatis-util

简介

  • mybatis-util是为了简化mybatis开发过程中的sql.xml的开发和维护;
  • 去XML,SQL开发和维护;
  • 本项目支持Bean对象注解,已达到增删查改的业务需求;
  • 本项目是spring boot结构
  • insert:支持自增ID;
  • update:以ID为查询条件修改非主键字段数据;
  • 查询当前支持 =,!=,IN,右模糊查询(like 'aa%‘),>,>=,<,<=查询条件;
  • 查询支持查询结果和Bean自动转换
  • 支持数据转换事件,当前数据结构只支持string(例如:属性json数据和对象转换);
  • 支持排序分页(支持limit max,offset min校验)
  • 支持简单类型结果查询(List&lt;String&gt;,List&lt;Long&gt;,List&lt;Integer&gt;,List&lt;Double&gt;)
  • 支持对象查询(并支持属性注解)
  • 本项目当前支持单表操作
  • 本项目当前只支持MySql数据库

示例

可以查看:mybatis-util-example

/** 实体对象 */
@TableName(name="test")
public class TestBean {
	@GeneratedValue
	private Integer id;
	private String name;
	private String testName;
	private Date createTime;
	
	@FieldAnalyzeHandler(handler = PersonFieldAnalyzeHandler.class)
	private Person person;

 

/** 数据转换实例 */
public class PersonFieldAnalyzeHandler implements AbstractFieldAnalyzeHandler<Person>{

	@Override
	public Person handler(Object obj) {
		if(obj == null || "".equals(obj)) {
			return null;
		}
		Gson gson = new Gson();
		return gson.fromJson(obj.toString(), Person.class);
	}

	@Override
	public String rehandler(Object obj) {
		if(obj == null) {
			return null;
		}
		return new Gson().toJson(obj);
	}

}

 

/** 查询对象 */
public class TestBeanQuery {
	@BeanField(fieldName="id")
	private List<Integer> idList;
	private String name;

 

/** 测试用例 */
public class TemplateTest extends ApplicationTests{

	@Autowired
	private MybatisTemplate template;
	
	@Test
	@Transactional
	public void insertOne() {
		TestBean bean = new TestBean();
		bean.setName("name");
		bean.setTestName("testName");
		bean.setCreateTime(new Date());
		assertTrue(template.insert(bean));
		assertNotNull(bean.getId());
	}
	
	@Test
	@Transactional
	public void update() {
		TestBean bean = new TestBean();
		bean.setName("name");
		bean.setId(1);
		assertNotEquals(template.update(bean), 0);
	}
	
	@Test
	@Transactional
	public void delete() {
		TestBean bean = new TestBean();
		bean.setName("name");
		bean.setId(1);
		assertNotEquals(template.delete(bean), 0);
	}
	
	@Test
	public void selectOne() {
		TestBean bean = template.selectOne(TestBean.class);
		assertNotNull(bean);
		assertNotNull(bean.getId());
	}
	
	@Test
	public void selectIn() {
		Query query = new Query();
		List<Integer> list = Lists.newArrayList();
		list.add(0);
		list.add(1);
		query.addCriteria(Criteria.in("id", list));
		List<TestBean> beans = template.select(query.getWhereMap(), TestBean.class);
		assertNotNull(beans);
	}
	
	@Test
	public void selectEqual() {
		Query query = new Query();
		query.addCriteria(Criteria.equal("id", 1));
		query.addCriteria(Criteria.equal("name", "name"));
		List<TestBean> beans = template.select(query.getWhereMap(), TestBean.class);
		assertNotNull(beans);
	}
	
	@Test
	public void selectNotEqual() {
		Query query = new Query();
		query.addCriteria(Criteria.notEqual("id", 1));
		List<TestBean> beans = template.select(query.getWhereMap(), TestBean.class);
		assertNotNull(beans);
	}
	
	@Test
	public void selectRightLike() {
		Query query = new Query();
		query.addCriteria(Criteria.rightLike("test_name", "test"));
		List<TestBean> beans = template.select(query.getWhereMap(), TestBean.class);
		assertNotNull(beans);
	}
	
	@SuppressWarnings("deprecation")
	@Test
	public void selectBetween() {
		Query query = new Query();
		query.addCriteria(Criteria.between("create_time", new Date(118, 01, 01), new Date(120, 01, 01)));
		Map<String, Object> map = query.getWhereMap();
		List<TestBean> beans = template.select(map, TestBean.class);
		System.out.println(beans);
		assertNotNull(beans);
	}
	
	@Test
	public void selectOneByOrder() {
		TestBean bean = template.selectOne(TestBean.class, SortAndLimitConstant.Sort("id", Order.DESC));
		assertNotNull(bean);
		assertNotNull(bean.getId());
	}
	
	@Test
	public void selectOneByOrder2() {
		TestBean bean = template.selectOne(TestBean.class, SortAndLimitConstant.Sort("id", null));
		assertNotNull(bean);
		assertNotNull(bean.getId());
	}
	
	@Test
	public void selectInteger() {
		Map<String, Object> map = Maps.newHashMap();
		map.put(MybatisXmlKeyConstant.TABLE_SELECT_FIELD.getName(), "id");
		map.putAll(ClassToMapUtil.getTableMap(TestBean.class));
		List<Integer> list = template.select(map, Integer.class);
		assertNotNull(list);
	}
	
	@Test
	public void selectString() {
		Map<String, Object> map = Maps.newHashMap();
		map.put(MybatisXmlKeyConstant.TABLE_SELECT_FIELD.getName(), "name");
		map.putAll(ClassToMapUtil.getTableMap(TestBean.class));
		List<String> list = template.select(map, String.class);
		System.out.println(list);
		assertNotNull(list);
	}
	
	@Test
	public void selectOneString() {
		Map<String, Object> map = Maps.newHashMap();
		map.put(MybatisXmlKeyConstant.TABLE_SELECT_FIELD.getName(), "name");
		map.putAll(ClassToMapUtil.getTableMap(TestBean.class));
		String str = template.selectOne(map, String.class);
		System.out.println(str);
		assertNotNull(str);
	}
	
	@Test
	public void selectByObject() {
		TestBeanQuery query = new TestBeanQuery();
		query.setIdList(Lists.newArrayList(1,2,3,4));
		query.setName("test");
		List<TestBean> beans = template.select(query, null, TestBean.class);
		System.out.println(beans);
		assertNotNull(beans);
	}
	
	@Test
	@Transactional
	public void insertOneByHardler() {
		TestBean bean = new TestBean();
		bean.setName("name");
		bean.setTestName("testName");
		bean.setCreateTime(new Date());
		bean.setPerson(new Person(1L, "person test"));
		assertTrue(template.insert(bean));
		assertNotNull(bean.getId());
	}
	
	@Test
	public void selectByHardler() {
		Query query = new Query();
		query.addCriteria(Criteria.gte("id", 1));
		List<TestBean> beans = template.select(query.getWhereMap(), TestBean.class);
		assertNotNull(beans);
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值