mybatis對象化封裝,去XML,去SQL編寫,提供CRUD操作

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);
	}
	
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章