From a8a291ead83e06f697840714ae9afeaa7f2d8f1a Mon Sep 17 00:00:00 2001 From: ChenL Date: Fri, 8 Sep 2017 23:57:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?JPA=E6=95=B4=E5=90=88=EF=BC=8Cbiz=E6=9C=89k?= =?UTF-8?q?otlin=E7=A4=BA=E4=BE=8B=EF=BC=8C=E6=B3=A8=E8=A7=A3=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E7=9A=84mybatis=E5=85=B6=E5=AE=9E=E5=BE=88=E5=A5=BD?= =?UTF-8?q?=E7=94=A8=EF=BC=8C=E4=BB=8A=E5=A4=A9=E6=B2=A1=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=BA=86=E6=9A=82=E6=97=B6=E4=B8=8D=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ace-blog-parent/ace-blog-admin/pom.xml | 76 ++++++++++++++-- .../blog/admin/BlogAdminBootstrap.java | 5 ++ .../github/wxiaoqi/blog/admin/biz/BlogBiz.kt | 51 +++++++++++ .../admin/config/MapperConfiguration.java | 4 +- .../admin/config/MybatisConfiguration.java | 13 ++- .../blog/admin/dao/BlogArticleDao.java | 10 +++ .../wxiaoqi/blog/admin/dao/BlogDao.java | 48 ++++++++++ .../wxiaoqi/blog/admin/dao/BlogUserDao.java | 10 +++ .../wxiaoqi/blog/admin/entity/Blog.java | 84 +++++++++++++++++ .../blog/admin/entity/BlogArticle.java | 44 +++++++++ .../wxiaoqi/blog/admin/entity/BlogUser.java | 90 +++++++++++++++++++ .../blog/admin/mapper/ArticleMapper.java | 2 + .../blog/admin/repository/BaseRepository.java | 14 +++ .../repository/BaseRepositoryFactoryBean.java | 46 ++++++++++ .../repository/impl/BaseRepositoryImpl.java | 24 +++++ .../src/main/resources/application.yml | 11 ++- ace-blog-parent/ace-blog-ui/pom.xml | 2 +- ace-blog-parent/pom.xml | 4 +- ace-gate/src/main/resources/application.yml | 3 +- 19 files changed, 521 insertions(+), 20 deletions(-) create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepository.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepositoryFactoryBean.java create mode 100644 ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/impl/BaseRepositoryImpl.java diff --git a/ace-blog-parent/ace-blog-admin/pom.xml b/ace-blog-parent/ace-blog-admin/pom.xml index d1a71204..63e656ff 100644 --- a/ace-blog-parent/ace-blog-admin/pom.xml +++ b/ace-blog-parent/ace-blog-admin/pom.xml @@ -5,11 +5,16 @@ ace-blog-parent org.springframework.boot - 1.4.2.RELEASE + 1.5.2.RELEASE 4.0.0 ace-blog-admin + + true + 1.8 + + 1.1.4 1.5.12 @@ -84,17 +89,22 @@ 5.1.30 - - + - org.mybatis - mybatis - ${mybatis.version} + org.springframework.boot + spring-boot-starter-data-jpa - org.mybatis - mybatis-spring - ${mybatis.spring.version} + org.springframework.boot + spring-boot-starter-jdbc + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.0 @@ -151,8 +161,21 @@ guava 20.0 + + + + org.jetbrains.kotlin + kotlin-stdlib-jre8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-reflect + ${kotlin.version} + + ${project.basedir}/src/main/java blog-admin @@ -183,6 +206,41 @@ org.springframework.boot spring-boot-maven-plugin + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${kotlin.version} + + + spring + + 1.8 + + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + org.jetbrains.kotlin + kotlin-maven-allopen + ${kotlin.version} + + + \ No newline at end of file diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/BlogAdminBootstrap.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/BlogAdminBootstrap.java index 6910032d..10afd29b 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/BlogAdminBootstrap.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/BlogAdminBootstrap.java @@ -1,9 +1,12 @@ package com.github.wxiaoqi.blog.admin; +import com.github.wxiaoqi.blog.admin.repository.BaseRepositoryFactoryBean; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.hystrix.EnableHystrix; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; /** * ${DESCRIPTION} @@ -14,6 +17,8 @@ import org.springframework.cloud.netflix.hystrix.EnableHystrix; @EnableEurekaClient @EnableHystrix @SpringBootApplication +@MapperScan(basePackages = "com.github.wxiaoqi.blog.admin.mapper") +@EnableJpaRepositories(repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class) public class BlogAdminBootstrap { public static void main(String[] args) { new SpringApplicationBuilder(BlogAdminBootstrap.class).web(true).run(args); } diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt new file mode 100644 index 00000000..eebc47fd --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt @@ -0,0 +1,51 @@ +package com.github.wxiaoqi.blog.admin.biz + +import com.github.wxiaoqi.blog.admin.dao.BlogDao +import com.github.wxiaoqi.blog.admin.entity.Blog +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.data.domain.Page +import org.springframework.data.domain.Pageable +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Propagation +import org.springframework.transaction.annotation.Transactional + +/** + * @author colin + */ +@Service +class BlogBiz{ + + @Autowired + private var blogDao: BlogDao? = null + + /** + * 新增/修改 + * @return 新增/修改后的对象 + */ + fun save(blog: Blog): Blog{ + return blogDao!!.save(blog) + } + + /** + * 根据id修改名称 + */ + @Transactional(rollbackFor = arrayOf(Exception::class),propagation = Propagation.REQUIRED) + fun updateNameById(id: Int,name: String){ + val blog = blogDao!!.findOne(id) + //jpa查询出对象后,使用事务进行提交,不需要再写save方法 + blog.name = name + } + + /** + * 根据名称like并选出博主年龄大于25岁的 + * 返回值可为空 + */ + fun findByNameLike(name: String): List? { + //fiter是kotlin的一个高阶函数,简化了jdk8的lambda表达式的stream().filter + return blogDao!!.findByNameContaining(name).filter { it.user != null && it.user.age > 25 } + } + + fun findByArticlesTitleIn(titles: List,pageable: Pageable): Page{ + return blogDao!!.findByArticlesTitleIn(titles,pageable) + } +} \ No newline at end of file diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java index 86a3fcf8..44b0f56d 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java @@ -16,8 +16,8 @@ import tk.mybatis.spring.mapper.MapperScannerConfigurer; * @date 2016年12月15日 * @since 1.7 */ -@Configuration -@AutoConfigureAfter(MybatisConfiguration.class) +//@Configuration +//@AutoConfigureAfter(MybatisConfiguration.class) public class MapperConfiguration implements EnvironmentAware { private RelaxedPropertyResolver propertyResolver; diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java index a458a1bc..d823638a 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java @@ -29,8 +29,8 @@ import java.util.Properties; * @date 2016年12月15日 * @since 1.7 */ -@Configuration -@EnableTransactionManagement +//@Configuration +//@EnableTransactionManagement public class MybatisConfiguration implements EnvironmentAware { @@ -95,6 +95,9 @@ public class MybatisConfiguration implements EnvironmentAware { if(StringUtils.isNotBlank(typeAliasesPackage)){ bean.setTypeAliasesPackage(typeAliasesPackage); } + org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(); + configuration.setMapUnderscoreToCamelCase(true); //启用驼峰命名 + bean.setConfiguration(configuration); //分页插件 PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); @@ -108,7 +111,7 @@ public class MybatisConfiguration implements EnvironmentAware { Interceptor[] plugins = new Interceptor[]{pageHelper}; bean.setPlugins(plugins); try { - bean.setMapperLocations(resolver.getResources(xmlLocation)); +// bean.setMapperLocations(resolver.getResources(xmlLocation)); 取消xml引入,使用注解 return bean.getObject(); } catch (Exception e) { e.printStackTrace(); @@ -140,7 +143,9 @@ public class MybatisConfiguration implements EnvironmentAware { this.testOnReturn = propertyResolver.getProperty("spring.datasource.testOnReturn"); this.poolPreparedStatements = propertyResolver.getProperty("spring.datasource.poolPreparedStatements"); this.maxOpenPreparedStatements = propertyResolver.getProperty("spring.datasource.maxOpenPreparedStatements"); - this.typeAliasesPackage = propertyResolver.getProperty("mybatis.typeAliasesPackage"); +// this.typeAliasesPackage = propertyResolver.getProperty("mybatis.typeAliasesPackage"); + //修改扫描包的地址 + this.typeAliasesPackage = propertyResolver.getProperty("com.github.wxiaoqi.blog.admin.entity"); this.xmlLocation = propertyResolver.getProperty("mybatis.xmlLocation"); } diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java new file mode 100644 index 00000000..81fb6afb --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java @@ -0,0 +1,10 @@ +package com.github.wxiaoqi.blog.admin.dao; + +import com.github.wxiaoqi.blog.admin.entity.BlogArticle; +import com.github.wxiaoqi.blog.admin.repository.BaseRepository; + +/** + * @author colin + */ +public interface BlogArticleDao extends BaseRepository { +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java new file mode 100644 index 00000000..8652a995 --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java @@ -0,0 +1,48 @@ +package com.github.wxiaoqi.blog.admin.dao; + +import com.github.wxiaoqi.blog.admin.entity.Blog; +import com.github.wxiaoqi.blog.admin.repository.BaseRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.Query; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; +import java.util.Map; + +/** + * @author colin + */ +public interface BlogDao extends BaseRepository { + + /** + * 根据博客中博文的标题在某个范围查询 + * @param titles 多个标题 + * @return + */ + Page findByArticlesTitleIn(List titles,Pageable pageable); + + /** + * 相当于 name like '%?%' + * @param name + * @return + */ + List findByNameContaining(String name); + + /** + * 使用nativeQuery不能使用jpa的自动分页pageable + * @return + */ + @Query(value = "select * from blog where name = ?1",nativeQuery = true) + List findBySqlName(); + + /** + * 使用jdbc查询,需要jdk 1.8 + * 可以根据需要传入jdbcTemplate也可以传入jpa的entityManager,在service层中@Autowired + */ + default List> findByJdbc(JdbcTemplate template, Pageable pageable){ + StringBuffer sql = new StringBuffer("select * from blog "); + sql.append("limit "+pageable.getOffset()+","+pageable.getPageSize()); + return template.queryForList(sql.toString()); + } +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java new file mode 100644 index 00000000..01130295 --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java @@ -0,0 +1,10 @@ +package com.github.wxiaoqi.blog.admin.dao; + +import com.github.wxiaoqi.blog.admin.entity.BlogUser; +import com.github.wxiaoqi.blog.admin.repository.BaseRepository; + +/** + * @author colin + */ +public interface BlogUserDao extends BaseRepository { +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java new file mode 100644 index 00000000..5a8d57ab --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java @@ -0,0 +1,84 @@ +package com.github.wxiaoqi.blog.admin.entity; + + +import javax.persistence.*; +import java.util.List; + +/** + * 博客 + * @author colin + */ +@Entity +//@Table(name = "ag_blog") jpa在构建表的时候会将驼峰转换成下划线,若不指定表明,则默认转换成表blog,字段也是一样的 +public class Blog { + + @Id + /** + * 使用主键自增长策略,我们自配置文件中配置了方言类型为 MySQL5InnoDBDialect,若使用默认的主键自增长策略AUTO,jpa会自动分配成SEQUENCE策略, + * 使用Mysql5Dialect时是mysql正常的IDENTITY策略 + */ + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String name; + + /** + * 手动设置数据库字段名称description、类型varchar、长度1000、默认值''、字段说明'这个是当前博客描述' + */ + @Column(name = "description",columnDefinition = "VARCHAR(1000) default '' comment '这个是当前博客描述'") + private String description; + + /** + * 字段名为user_id,下划线后面的是BlogUsers实体中设置@Id的字段 + * 通过OneToOne、ManyToOne在当前表生成外键和索引, OneToMany ManyToMany自动生成关系表并增加外键和索引 + * 注:外键和索引在InnoDB引擎下会生成 + */ + @ManyToOne(cascade = CascadeType.REFRESH) + private BlogUser user; + + /** + * 加载方式默认为LAZY懒加载,一个实体只有一个EAGER加载,否则报错 + */ + @ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL) + private List articles; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public BlogUser getUser() { + return user; + } + + public void setUser(BlogUser user) { + this.user = user; + } + + public List getArticles() { + return articles; + } + + public void setArticles(List articles) { + this.articles = articles; + } +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java new file mode 100644 index 00000000..eb7e280d --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java @@ -0,0 +1,44 @@ +package com.github.wxiaoqi.blog.admin.entity; + +import javax.persistence.*; + +/** + * 博客文章 + * @author colin + */ +@Entity +public class BlogArticle { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String title; + + @Column(columnDefinition = "TEXT") + private String content; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java new file mode 100644 index 00000000..0ad21ee6 --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java @@ -0,0 +1,90 @@ +package com.github.wxiaoqi.blog.admin.entity; + + +import javax.persistence.*; +import java.util.Date; + +/** + * 博主 + * @author colin + */ +@Entity +//@Table(name = "ag_blog_user") jpa在构建表的时候会将驼峰转换成下划线,若不指定表明,则默认转换成表blog_user,字段也是一样的 +public class BlogUser { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String name; + + private String phone; + + private String email; + + private Integer age; + + private String address; + + private Date crtTime; + + public BlogUser() { + this.crtTime = new Date(); + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public Date getCrtTime() { + return crtTime; + } + + public void setCrtTime(Date crtTime) { + this.crtTime = crtTime; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java index fab5e35a..580f07eb 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java @@ -1,7 +1,9 @@ package com.github.wxiaoqi.blog.admin.mapper; import com.github.wxiaoqi.blog.admin.entity.Article; +import org.springframework.stereotype.Repository; import tk.mybatis.mapper.common.Mapper; +@Repository public interface ArticleMapper extends Mapper
{ } \ No newline at end of file diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepository.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepository.java new file mode 100644 index 00000000..971d94cb --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepository.java @@ -0,0 +1,14 @@ +package com.github.wxiaoqi.blog.admin.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.repository.NoRepositoryBean; + +import java.io.Serializable; + +/** + * Created by Administrator on 2017/3/13. + */ +@NoRepositoryBean +public interface BaseRepository extends JpaRepository,JpaSpecificationExecutor { +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepositoryFactoryBean.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepositoryFactoryBean.java new file mode 100644 index 00000000..0d2c0e53 --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/BaseRepositoryFactoryBean.java @@ -0,0 +1,46 @@ +package com.github.wxiaoqi.blog.admin.repository; + +import com.github.wxiaoqi.blog.admin.repository.impl.BaseRepositoryImpl; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.support.JpaRepositoryFactory; +import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean; +import org.springframework.data.jpa.repository.support.SimpleJpaRepository; +import org.springframework.data.repository.core.RepositoryInformation; +import org.springframework.data.repository.core.RepositoryMetadata; +import org.springframework.data.repository.core.support.RepositoryFactorySupport; + +import javax.persistence.EntityManager; +import java.io.Serializable; + +/** + * Created by Administrator on 2017/3/13. + */ +public class BaseRepositoryFactoryBean,S,ID extends Serializable> extends JpaRepositoryFactoryBean { + + public BaseRepositoryFactoryBean(Class repositoryInterface) { + super(repositoryInterface); + } + + @Override + protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) { + return new BaseRepositoryFactory(entityManager); + } + + private static class BaseRepositoryFactory extends JpaRepositoryFactory { + public BaseRepositoryFactory(EntityManager entityManager){ + super(entityManager); + } + + @Override + @SuppressWarnings("{unchecked}") + protected SimpleJpaRepository getTargetRepository(RepositoryInformation information, EntityManager entityManager) { + return new BaseRepositoryImpl((Class) information.getDomainType(),entityManager); + } + + @Override + protected Class getRepositoryBaseClass(RepositoryMetadata metadata) { + return BaseRepositoryImpl.class; + } + } + +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/impl/BaseRepositoryImpl.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/impl/BaseRepositoryImpl.java new file mode 100644 index 00000000..3e11c68d --- /dev/null +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/repository/impl/BaseRepositoryImpl.java @@ -0,0 +1,24 @@ +package com.github.wxiaoqi.blog.admin.repository.impl; + +import com.github.wxiaoqi.blog.admin.repository.BaseRepository; +import org.springframework.data.jpa.repository.support.SimpleJpaRepository; +import org.springframework.data.repository.NoRepositoryBean; + +import javax.persistence.EntityManager; +import java.io.Serializable; + + +/** + * Created by Administrator on 2017/3/13. + */ +@NoRepositoryBean +public class BaseRepositoryImpl extends SimpleJpaRepository implements BaseRepository { + + private final EntityManager entityManager; + + public BaseRepositoryImpl(Class domainClass, EntityManager entityManager){ + super(domainClass,entityManager); + this.entityManager = entityManager; + } + +} diff --git a/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml b/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml index a1e7dbcd..3fa62c23 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml +++ b/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml @@ -7,6 +7,13 @@ logging: spring: application: name: blog-admin + #jpa 配置 + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.MySQL5InnoDBDialect #方言为InnoDB引擎的mysql,需指定引擎,InnoDB引擎支持数据回滚 + hibernate: + ddl-auto: update #启动时执行update表结构 jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 @@ -18,7 +25,7 @@ spring: name: test url: jdbc:mysql://localhost:3306/ag_blog?useUnicode=true&characterEncoding=UTF8 username: root - password: 123456 + password: root # 使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver @@ -36,6 +43,8 @@ spring: poolPreparedStatements: true maxOpenPreparedStatements: 20 mybatis: + configuration: + map-underscore-to-camel-case: true #mybatis 驼峰转换,若使用org的mapper则可以一步配置,tk通用mapper测试无效 basepackage: com.github.wxiaoqi.blog.admin.mapper xmlLocation: classpath:mapper/**/*.xml diff --git a/ace-blog-parent/ace-blog-ui/pom.xml b/ace-blog-parent/ace-blog-ui/pom.xml index d1d2a0d4..0eb21ec3 100644 --- a/ace-blog-parent/ace-blog-ui/pom.xml +++ b/ace-blog-parent/ace-blog-ui/pom.xml @@ -5,7 +5,7 @@ ace-blog-parent org.springframework.boot - 1.4.2.RELEASE + 1.5.2.RELEASE 4.0.0 diff --git a/ace-blog-parent/pom.xml b/ace-blog-parent/pom.xml index 9cff1418..a7060226 100644 --- a/ace-blog-parent/pom.xml +++ b/ace-blog-parent/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.2.RELEASE + 1.5.2.RELEASE 4.0.0 pom @@ -34,7 +34,7 @@ org.springframework.cloud spring-cloud-dependencies - Camden.SR3 + Dalston.SR2 pom import diff --git a/ace-gate/src/main/resources/application.yml b/ace-gate/src/main/resources/application.yml index 1168e4e6..f00c712e 100644 --- a/ace-gate/src/main/resources/application.yml +++ b/ace-gate/src/main/resources/application.yml @@ -10,9 +10,10 @@ spring: default-property-inclusion: non_null redis: database: 1 - host: 127.0.0.1 + host: 120.76.101.203 pool: max-active: 20 + port: 5247 server: port: 8765 #启动端口 # -- Gitee From 8ed9fe94ad4913c56c8e1e7cd03ff616db2afcfd Mon Sep 17 00:00:00 2001 From: ChenL Date: Sat, 9 Sep 2017 00:13:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?JPA=E6=95=B4=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt | 1 + .../github/wxiaoqi/blog/admin/config/MapperConfiguration.java | 1 + .../github/wxiaoqi/blog/admin/config/MybatisConfiguration.java | 1 + .../java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java | 1 + .../main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java | 1 + .../java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java | 1 + .../java/com/github/wxiaoqi/blog/admin/entity/Article.java | 3 +++ .../main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java | 1 + .../java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java | 1 + .../java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java | 1 + .../com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java | 1 - .../ace-blog-admin/src/main/resources/application.yml | 3 ++- ace-blog-parent/ace-blog-ui/pom.xml | 1 + ace-blog-parent/pom.xml | 1 + ace-gate/src/main/resources/application.yml | 3 +-- 15 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt index eebc47fd..a484113d 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/biz/BlogBiz.kt @@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Propagation import org.springframework.transaction.annotation.Transactional /** + * 博客服务层 * @author colin */ @Service diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java index 44b0f56d..a0dbf15b 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MapperConfiguration.java @@ -15,6 +15,7 @@ import tk.mybatis.spring.mapper.MapperScannerConfigurer; * @author wanghaobin * @date 2016年12月15日 * @since 1.7 + * 使用配置文件配置 */ //@Configuration //@AutoConfigureAfter(MybatisConfiguration.class) diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java index d823638a..2c49ac01 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/config/MybatisConfiguration.java @@ -28,6 +28,7 @@ import java.util.Properties; * @author wanghaobin * @date 2016年12月15日 * @since 1.7 + * 使用配置文件配置 */ //@Configuration //@EnableTransactionManagement diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java index 81fb6afb..0d7a06bd 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogArticleDao.java @@ -4,6 +4,7 @@ import com.github.wxiaoqi.blog.admin.entity.BlogArticle; import com.github.wxiaoqi.blog.admin.repository.BaseRepository; /** + * * @author colin */ public interface BlogArticleDao extends BaseRepository { diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java index 8652a995..b8001378 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogDao.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; /** + * * @author colin */ public interface BlogDao extends BaseRepository { diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java index 01130295..3893d232 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/dao/BlogUserDao.java @@ -4,6 +4,7 @@ import com.github.wxiaoqi.blog.admin.entity.BlogUser; import com.github.wxiaoqi.blog.admin.repository.BaseRepository; /** + * * @author colin */ public interface BlogUserDao extends BaseRepository { diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Article.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Article.java index 39183061..0db3a136 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Article.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Article.java @@ -3,6 +3,9 @@ package com.github.wxiaoqi.blog.admin.entity; import java.util.Date; import javax.persistence.*; +/** + * + */ @Table(name = "blog_article") public class Article { @Id diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java index 5a8d57ab..7b085d68 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/Blog.java @@ -6,6 +6,7 @@ import java.util.List; /** * 博客 + * * @author colin */ @Entity diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java index eb7e280d..f46b987d 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogArticle.java @@ -4,6 +4,7 @@ import javax.persistence.*; /** * 博客文章 + * * @author colin */ @Entity diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java index 0ad21ee6..67b44be6 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/entity/BlogUser.java @@ -6,6 +6,7 @@ import java.util.Date; /** * 博主 + * * @author colin */ @Entity diff --git a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java index 580f07eb..e2f0df81 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java +++ b/ace-blog-parent/ace-blog-admin/src/main/java/com/github/wxiaoqi/blog/admin/mapper/ArticleMapper.java @@ -4,6 +4,5 @@ import com.github.wxiaoqi.blog.admin.entity.Article; import org.springframework.stereotype.Repository; import tk.mybatis.mapper.common.Mapper; -@Repository public interface ArticleMapper extends Mapper
{ } \ No newline at end of file diff --git a/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml b/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml index 3fa62c23..9ca4b148 100644 --- a/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml +++ b/ace-blog-parent/ace-blog-admin/src/main/resources/application.yml @@ -14,6 +14,7 @@ spring: dialect: org.hibernate.dialect.MySQL5InnoDBDialect #方言为InnoDB引擎的mysql,需指定引擎,InnoDB引擎支持数据回滚 hibernate: ddl-auto: update #启动时执行update表结构 + show-sql: true #显示sql jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 @@ -25,7 +26,7 @@ spring: name: test url: jdbc:mysql://localhost:3306/ag_blog?useUnicode=true&characterEncoding=UTF8 username: root - password: root + password: 123456 # 使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver diff --git a/ace-blog-parent/ace-blog-ui/pom.xml b/ace-blog-parent/ace-blog-ui/pom.xml index 0eb21ec3..f42f721a 100644 --- a/ace-blog-parent/ace-blog-ui/pom.xml +++ b/ace-blog-parent/ace-blog-ui/pom.xml @@ -30,4 +30,5 @@ 1.9.22 + \ No newline at end of file diff --git a/ace-blog-parent/pom.xml b/ace-blog-parent/pom.xml index a7060226..9f4e446c 100644 --- a/ace-blog-parent/pom.xml +++ b/ace-blog-parent/pom.xml @@ -2,6 +2,7 @@ + org.springframework.boot spring-boot-starter-parent diff --git a/ace-gate/src/main/resources/application.yml b/ace-gate/src/main/resources/application.yml index f00c712e..1168e4e6 100644 --- a/ace-gate/src/main/resources/application.yml +++ b/ace-gate/src/main/resources/application.yml @@ -10,10 +10,9 @@ spring: default-property-inclusion: non_null redis: database: 1 - host: 120.76.101.203 + host: 127.0.0.1 pool: max-active: 20 - port: 5247 server: port: 8765 #启动端口 # -- Gitee