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