此框架只是为了解决mybatis少写xml和sql。
如果这里面的满足不了你的需求,你可以用mybatis的MapperScannerConfigurer 继续原生使用mybatis
集成步骤
1 配置sqlSessionFactory里的mapperLocations,第二个value内容必须写,复制就行
<property name="mapperLocations">
<array>
<value>你自己的mapper.xml</value>
<value>classpath:cn/ker/frame/owlqs/mapping/*Mapper.xml</value>
</array>
</property>
2 在mybatis(mybatis-config.xml)配置文件中添加
<!-- 配置文件是为了配合组件中的简写,直接复制就行 -->
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
3 配置sqlSessionTemplate
<!-- sqlSessionTemplate配置 和org.mybatis.spring.mapper.MapperScannerConfigurer可以共存-->
<bean name="sqlSessionTemplate" id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
其他spring和mybatis配置都和官方配置都一样
4 要操作的entity集成POJO约束类
例如 : public class User extends Pojo ,pojo没有序列化,要对象序列化还得自己实现Serializable
注意:pojo有三个注解
(1) @TableName("表命") 类似hibernate的@Table 都是为了告诉框架你的真实表名叫什么,如果你的表名和对象名字一样,可以不用写
(2) @FieldName("列名") 类似hibernate的@Column 告诉框架真实的列名是什么,如果你的列名和对象名字一样,可以不用写
(3) @TempField 标识某个字段不录入数据库中 标识该注解的字段将没有增删改查的功能。
5 集成basedao
@Repository
public class SupplierOrderDao extends BaseDao<SupplierOrder, String> {
}
@Repository类上面注解 必须写
BaseDao<对象, 主键类型> 我这里主键类型是UUID 所以是String
然后在你的service实现层初始化你的dao,就可以调用封装的函数了
/**
* 添加不为空的记录(只将不为空字段入库,效率高)
*
* @param po
* @return 受改变的记录数
*/
public int addLocal(T po);
/**
* 记录添加(所有字段入库,效率中)
*
* @param po
* @return
*/
public int add(T po);
/**
* 通过主键获取某个记录
*
* @param id 主键
* @return PO
*/
public T get(PK id);
/**
* 通过主键获取某个记录
*
* @param id 主键
* @param costom 主键name
* @return PO
*/
public T get(PK id,String costom);
/**
* 通过主键获取某个字段的值
*
* @param id
* @param fileName
* @return
*/
public Serializable getField(PK id, String fileName);
/**
* 条件获取一条记录
*
* @param t
* @param 条件表达式
* @return PO
*/
public T get(WherePrams where);
/**
* 条件获取某个记录字段
*
* @param where
* @param fileName
* @return
*/
public Serializable getFile(WherePrams where, String fileName);
/**
* 条件查询列表
*
* @param where
* 条件表达式
* @return PO列表
*/
public List<T> list(WherePrams where);
/**
* 查询某个字段列表
*
* @param where
* 条件表达式
* @param fileName
* 要查询的字段
* @return
*/
public Serializable[] listFile(WherePrams where, String fileName);
/**
* 查询某些字段
*
* @param where
* 条件表达式
* @param files
* 要查询的字段集
* @return 查询的PO字段列表
*/
public List<Map<String, Serializable>> listFiles(WherePrams where, String[] files);
/**
* 更新不为null的PO字段
*
* @param po
* @return 受影响的行数
*/
public int updateLocal(T po);
/**
* 更新PO的所有字段
*
* @param po
* @return 受影响的行数
*/
public int update(T po);
/**
* 条件更新不为null的字段
*
* @param po
* @param 条件表达式
* @return 受影响的行数
*/
public int updateLocal(T po, WherePrams where);
/**
* 条件更新所有字段
*
* @param po
* @param 条件表达式
* @return 受影响的行数
*/
public int update(T po, WherePrams where);
/**
* 删除某个记录
*
* @param id
* 主键
* @return 受影响的行数
*/
public int del(PK id);
/**
* 条件删除某个记录
*
* @param where
* 条件表达式
* @return 受影响的行数
*/
public int del(WherePrams where);
/**
* 自定义sql查询
*
* @param po
* 用于封装返回结果的Bean
* @param sql
* 用于执行查询的Sql
* @param args
* Sql占位付对应的参数
* @return 结果集合
*/
public List<Map<String, Object>> listBySql(String sql);
/**
* 执行自定义sql
*
* @param sql
* 用于执行的Sql
* @param args
* Sql占位付对应的参数
* @return 受影响的行数
*/
public int excuse(String sql);
/**
* 获取指定条件的记录数
*
* @param where
* 条件表达式
* @return 查询到的记录数
*/
public long count(WherePrams where);
/**
* 获取对应表中的记录数
*
* @return 表中的条数
*/
public long size();
/**
* 是否存在字段相同的记录(ID以及不为空的字段除外)
*
* @param po
* 参照实体
* @return
*/
public boolean isExist(T po);
/**
* 是否存在指定条件的记录
*
* @param where
* 条件表达式
* @return
*/
public boolean isExist(WherePrams where);
/**
* 内查询
*
* @param fileName
* 用于内查询的字段
* @param values
* 字段的值
* @return 查询到的结果集
*/
public List<T> in(String fileName, Serializable[] values);
链接地址点击打开链接
如果这里面的满足不了你的需求,你可以用mybatis的MapperScannerConfigurer 继续原生使用mybatis
集成步骤
1 配置sqlSessionFactory里的mapperLocations,第二个value内容必须写,复制就行
<property name="mapperLocations">
<array>
<value>你自己的mapper.xml</value>
<value>classpath:cn/ker/frame/owlqs/mapping/*Mapper.xml</value>
</array>
</property>
2 在mybatis(mybatis-config.xml)配置文件中添加
<!-- 配置文件是为了配合组件中的简写,直接复制就行 -->
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
3 配置sqlSessionTemplate
<!-- sqlSessionTemplate配置 和org.mybatis.spring.mapper.MapperScannerConfigurer可以共存-->
<bean name="sqlSessionTemplate" id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
其他spring和mybatis配置都和官方配置都一样
4 要操作的entity集成POJO约束类
例如 : public class User extends Pojo ,pojo没有序列化,要对象序列化还得自己实现Serializable
注意:pojo有三个注解
(1) @TableName("表命") 类似hibernate的@Table 都是为了告诉框架你的真实表名叫什么,如果你的表名和对象名字一样,可以不用写
(2) @FieldName("列名") 类似hibernate的@Column 告诉框架真实的列名是什么,如果你的列名和对象名字一样,可以不用写
(3) @TempField 标识某个字段不录入数据库中 标识该注解的字段将没有增删改查的功能。
5 集成basedao
@Repository
public class SupplierOrderDao extends BaseDao<SupplierOrder, String> {
}
@Repository类上面注解 必须写
BaseDao<对象, 主键类型> 我这里主键类型是UUID 所以是String
然后在你的service实现层初始化你的dao,就可以调用封装的函数了
/**
* 添加不为空的记录(只将不为空字段入库,效率高)
*
* @param po
* @return 受改变的记录数
*/
public int addLocal(T po);
/**
* 记录添加(所有字段入库,效率中)
*
* @param po
* @return
*/
public int add(T po);
/**
* 通过主键获取某个记录
*
* @param id 主键
* @return PO
*/
public T get(PK id);
/**
* 通过主键获取某个记录
*
* @param id 主键
* @param costom 主键name
* @return PO
*/
public T get(PK id,String costom);
/**
* 通过主键获取某个字段的值
*
* @param id
* @param fileName
* @return
*/
public Serializable getField(PK id, String fileName);
/**
* 条件获取一条记录
*
* @param t
* @param 条件表达式
* @return PO
*/
public T get(WherePrams where);
/**
* 条件获取某个记录字段
*
* @param where
* @param fileName
* @return
*/
public Serializable getFile(WherePrams where, String fileName);
/**
* 条件查询列表
*
* @param where
* 条件表达式
* @return PO列表
*/
public List<T> list(WherePrams where);
/**
* 查询某个字段列表
*
* @param where
* 条件表达式
* @param fileName
* 要查询的字段
* @return
*/
public Serializable[] listFile(WherePrams where, String fileName);
/**
* 查询某些字段
*
* @param where
* 条件表达式
* @param files
* 要查询的字段集
* @return 查询的PO字段列表
*/
public List<Map<String, Serializable>> listFiles(WherePrams where, String[] files);
/**
* 更新不为null的PO字段
*
* @param po
* @return 受影响的行数
*/
public int updateLocal(T po);
/**
* 更新PO的所有字段
*
* @param po
* @return 受影响的行数
*/
public int update(T po);
/**
* 条件更新不为null的字段
*
* @param po
* @param 条件表达式
* @return 受影响的行数
*/
public int updateLocal(T po, WherePrams where);
/**
* 条件更新所有字段
*
* @param po
* @param 条件表达式
* @return 受影响的行数
*/
public int update(T po, WherePrams where);
/**
* 删除某个记录
*
* @param id
* 主键
* @return 受影响的行数
*/
public int del(PK id);
/**
* 条件删除某个记录
*
* @param where
* 条件表达式
* @return 受影响的行数
*/
public int del(WherePrams where);
/**
* 自定义sql查询
*
* @param po
* 用于封装返回结果的Bean
* @param sql
* 用于执行查询的Sql
* @param args
* Sql占位付对应的参数
* @return 结果集合
*/
public List<Map<String, Object>> listBySql(String sql);
/**
* 执行自定义sql
*
* @param sql
* 用于执行的Sql
* @param args
* Sql占位付对应的参数
* @return 受影响的行数
*/
public int excuse(String sql);
/**
* 获取指定条件的记录数
*
* @param where
* 条件表达式
* @return 查询到的记录数
*/
public long count(WherePrams where);
/**
* 获取对应表中的记录数
*
* @return 表中的条数
*/
public long size();
/**
* 是否存在字段相同的记录(ID以及不为空的字段除外)
*
* @param po
* 参照实体
* @return
*/
public boolean isExist(T po);
/**
* 是否存在指定条件的记录
*
* @param where
* 条件表达式
* @return
*/
public boolean isExist(WherePrams where);
/**
* 内查询
*
* @param fileName
* 用于内查询的字段
* @param values
* 字段的值
* @return 查询到的结果集
*/
public List<T> in(String fileName, Serializable[] values);