KO
|
EN
gitlite — search
Search
#javascript
#python
#hacktoberfest
#react
#ai
#typescript
#llm
#go
#golang
#android
#machine-learning
#rust
#deep-learning
#linux
jkami
★ 9
Open GitHub ↗
SQL Mapper Framework for Java
Download README (.md)
Explore Similar Repositories
pyglet_examples
:
A repository with pyglet examples that I have come across and tried implementing.
react-mapApp
:
使用react制作地图应用(基于百度地图api)持续更新
Cardiff
:
Version Control Tool for Binary Format Files.
unRAID-plugins
:
🔌 Some unRAID plugins I use
slash
:
Teaching neural networks how to play guitar: Generating guitar solos with samplernn.
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
jkami
?
Download (.md)
# jkami简介及特征 jkami是对jdbc轻量级的封装,不需要第三方jar包 实现 类似Hibernate实体维护和Mybaits SQL分离的两大优势。 具有以下特征: * 1.映射关系不用设置xml,零配置 * 2.SQL语句和java代码的分离 * 3.可以自动生成SQL语句(依赖freemarker) * 4.用户只需定义接口,spring AOP自动生成实现代理类 * 5.集成spring的事务管理 * 6.支持多数据源 * 7.SQL标签支持freemarker语法更灵活 * 8.自动识别分页查询 * 9.支持实体的懒加载 * 10.支持实体的级联查询(可配置查询深度) ## Quick Start <dependency> <groupId>com.github.lftao</groupId> <artifactId>jkami</artifactId> <version>1.0.6</version> </dependency> ## spring config <bean class="com.javatao.jkami.spring.MapperScannerConfigurer"> <property name="dataSourceId" value="dataSource1" /> <property name="basePackage" value="jkami.demo.dao" /> <property name="dbType" value="mysql" /> <property name="lazybean" value="true" /> <!-- 默认对应dao同级下的sql文件夹 --> <!--<property name="sqlpath" value="/sql/" /> --> </bean> ### 接口实体[User.java] @Depth(2)//嵌套实体查询深度,可不填写,默认为2层 @Table("tb_user")//对象表名 public class User implements Serializable { private static final long serialVersionUID = 1208054851593657045L; @Key private Long id; private String name; private Integer age; private Date birthday; // 默认是字段的 小驼峰命名规则 nick_name private String nickName; // 对应数据库字段 @Column("tel") private String mobile; // 级联查询(如果开启懒加载只在第一次get时候读取) > 可选参数自身实体 @ResultType(UserOrder.class) @Sql("select tb.* from tb_user_order tb where tb.user_id = :id") private List<UserOrder> userOrder; .... } ### 接口定义[IUserDao.java] @KaMiDao @ResultType(User.class)//默认查询返回类型 //继承接口提供单表的增删改查操作 public interface IUserDao extends KaMiDaoInterface<User>{ User findUserByMobile(@Param("tel") Long mobile); List<User> findListByName(@Param("name") String name); // :age or ${age} @ResultType(Long.class) @Sql("select count(1) from tb_user where age > :age ") Long countAge(@Param("age") int age); @ResultType(Map.class) List<Map<String, Object>> findMapByName(@Param("name") String name); @PageQuery Page<User> findMyPage(@Param("map") Map<String, Object> map); } ### 接口定义[IUserOrderDao.java] @KaMiDao public interface IUserOrderDao { // 执行更新插入,需要返回值 @ExecuteUpdate int[] insertOrders(@Param("orders") List<UserOrder> orders); // 执行更新插入,不需要返回值 可以不用 @ExecuteUpdate void insertOrdersVoid(@Param("orders") List<UserOrder> orders); } ### SQL文件[findMapByName.sql] select * from tb_user where name = :name ### SQL文件[findMyPage.sql] select * from tb_user where 1=1 <#if map["name"]??> and name like '%${map["name"]}%' </#if> <#if map["id"]??> and id = '${map["id"]}' </#if> <#if id??> and id = '${id}' </#if> ### SQL文件[insertOrders.sql] <#list orders as os> insert into tb_user_order(name,user_id,create_date) values('${os.name}',${os.user.id!os.userId},'${os.createDate?string("yyyy-MM-dd HH:mm:ss")}'); </#list> ### 测试代码 https://github.com/lftao/jkami-demo ### 其他 喜欢请右上角星星(star)点一点,谢谢