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<String>,List<Long>,List<Integer>,List<Double>)
- 支持對象查詢(並支持屬性註解)
- 本項目當前支持單表操作
- 本項目當前只支持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);
}
}