摘要:接着上一篇,我们在测试可以允许后,我们接着来写一个查询功能,一连接数据库的查询例子我来看看项目的结构顶级父项目公司默认有的父项目数据层
接着上一篇,我们在测试web可以允许后,我们接着来写一个查询功能,
一、 连接数据库的查询例子我来看看项目的结构:
tx-parent 顶级父项目(公司默认有的) |- tx-manager ---------------------------pom.xml 父项目 |- tx-manager-mapper ---------------数据层 |- tx-manager-common ---------------工具层 |- tx-manager-bean ---------------实体层 |- tx-manager-service --------------服务层 |- tx-manager-web ---------------控制层
技术栈:
mqsql数据库
druid连接池
mybatis持久层
spring这个就不说了吧
分析:
分模块开发,所以我们需要把:
实体放到 -> bean 项目中
mybatis的接口和映射文件放到 -> mapper 项目中
yml项目配置如:连接池,日志等 放到 -> web 项目中
下面我们开始动手:
一、tx-manager-mapper1、创建数据库、表(这个过程忽略),
2、添加依赖,我们需要依赖mybatis、mysql驱动、连接池等。tx-manager-mapper的pom.xml内容如下:
4.0.0 com.topinfo.manager tx-manager 1.0.0-SNAPSHOT tx-manager-mapper com.topinfo.manager tx-manager-bean 1.0.0-SNAPSHOT org.mybatis.spring.boot mybatis-spring-boot-starter com.github.pagehelper pagehelper-spring-boot-starter mysql mysql-connector-java com.alibaba druid src/main/java **/*.properties **/*.xml false
3、我们通过反向工程来生成 实体bean、 mybatis接口和映射文件, 并把他们拷贝到项目中,如图:
二、tx-manager-bean1、把反向工程生成的实体复制到 bean 项目中;pom.xml 不需要引入其他,如图:
1、编写测试方法,编写接口和实现类;
接口 ITxAccountService :
public interface ITxAccountService { /** * @Description: 新增账户 * @param: @param account * @param: @return * @return: TxResult */ public TxResult addTxAccount(TxAccount account); /** * @Description: 修改账户 * @param: @param account * @param: @return * @return: TxResult */ public TxResult updateTxAccount(TxAccount account); /** * @Description: 查看账户信息 * @param: @param accountId * @param: @return * @return: TxResult */ public TxResult queryTxAccount(String accountId); /** * @Description: 查询账户列表 * @param: @param username * @param: @param page * @param: @param rows * @return: TxResult */ public TxResult queryTxAccountList(String username, int page, int rows); }
实现类 TxAccountServiceImpl:
/** * @ClassName: TxAccountServiceImpl * @Description: 账户服务类 * @author: 杨攀 * @date: 2019年1月10日 下午2:55:13 * @Copyright: 2019 www.tuxun.net Inc. All rights reserved. */ @Service public class TxAccountServiceImpl implements ITxAccountService { @Autowired private TxAccountMapper accountMapper; /** *四、tx-manager-webDescription: 新增账户
* @param account * @return * @see com.topinfo.manager.service.ITxAccountService#addTxAccount(com.topinfo.manager.bean.TxAccount) */ @Override public TxResult addTxAccount(TxAccount account){ return null; } @Override public TxResult updateTxAccount(TxAccount account){ return null; } @Override public TxResult queryTxAccount(String accountId){ //根据账户id查询 TxAccount account = accountMapper.selectByPrimaryKey (accountId); if(null != account) { return TxResult.buildSuccess (account); } return TxResult.buildFailure (); } @Override public TxResult queryTxAccountList(String username, int pageNum, int rows){ return null; } }
tx-manager-web层我们需要做几步:
1、连接池、日志的配置
2、controller的编写
3、启动dao层的扫描
1、在application-dev.yml开发配置中,添加连接池的配置,同时设置Tomcat服务端口、模板thymeleaf、security 等, 内容如下:
############################################################ ############# 开发环境配置 ############################################################ ## Tomcat服务端口 server: port: 8080 ############################################################ ############# 数据源配置 Druid ############################################################ druid: datasource: ## useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC url: jdbc:mysql://127.0.0.1:3306/tx-manager?characterEncoding=UTF-8&serverTimezone=UTC username: spring password: spring driverClass: com.mysql.jdbc.Driver spring: ############################################################ ## thymeleaf 模板配置 thymeleaf: cache: false ## 开发阶段,关闭thymeleaf缓存 prefix: classpath:/templates/ suffix: .html security: user: name: admin password: 111111
说明: url后面需要添加 serverTimezone=UTC,否则启动会报异常
java.sql.SQLException: The server time zone value "Öйú±ê׼ʱ¼ä"....
2、添加配置类
/** *@Description: 阿里连接池 *@Author:杨攀 *@Since:2018年6月28日下午5:18:02 */ @Configuration @ConfigurationProperties(prefix = "druid.datasource") public class DruidDataSourceConfig { @Autowired private Environment env; @Bean public DruidDataSource dataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(env.getProperty("druid.datasource.url")); dataSource.setUsername(env.getProperty("druid.datasource.username")); dataSource.setPassword(env.getProperty("druid.datasource.password")); dataSource.setInitialSize(5); dataSource.setMaxActive(50); dataSource.setMinIdle(0); dataSource.setMaxWait(60000); dataSource.setValidationQuery("SELECT 1"); dataSource.setTestOnBorrow(false); dataSource.setTestWhileIdle(true); dataSource.setPoolPreparedStatements(false); return dataSource; } }
3、在application.yml全局配置中添加日志的配置, mybatis的配置
############################################################ ############# 全局配置 ############################################################ # 多个环境配置文件切换 spring: profiles: active: dev ############################################################ ############# mybatis 配置 ############################################################ # mybatis配置 mybatis: # 配置mybatis的xml文件路径 com.topinfo.manager.mapper mapper-locations: classpath:/com/topinfo/manager/mapper/*.xml # 配置Bean的路径 type-aliases-package: com.topinfo.manager.bean # mybatis 分页插件配置 pagehelper: reasonable: true supportMethodsArguments: true params: count=countSql ############################################################ ############# logging 日志配置 ############################################################ logging: # 日志配置文件,Spring Boot默认使用classpath路径下的日志配置文件 config: classpath:logback-boot.xml # 日志文件,绝对路径或相对路径 D:/upload, 最后不需要添加“/” dir: D:/upload # 日志输出级别: 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG level: # 配置spring web日志级别 root: INFO2、controller的编写
controller的编写
@RestController @RequestMapping("/account") public class AccountController { @Autowired private ITxAccountService accountService; @RequestMapping(value="/view", method=RequestMethod.GET) public TxResult view(String id) { return accountService.queryTxAccount (id); } }3、启动dao层的扫描
添加 @MapperScan 扫描注解, 然后运行。
@SpringBootApplication @MapperScan(value={"com.topinfo.manager.mapper"}) //此注解表示动态扫描DAO接口所在包 public class ManagerApplication { public static void main(String[] args) throws Exception{ SpringApplication.run (ManagerApplication.class, args); } }
在数据库中添加了一条测试数据,然后根据id访问,最后结果如图:
这样,数据库访问就通了,接下来,我们继续封装,比如: 全局异常处理,安全模块等等
补充:
TxResult 为自定义响应格式,内容如下:
/** * @ClassName: TxResult * @Description: 自定义响应格式 * @author: 杨攀 * @date: 2018年12月26日 下午5:35:34 * @Copyright: 2018 www.tuxun.net Inc. All rights reserved. */ public class TxResult { public static final int STATE_SUCCESS = 1; //表示成功 public static final int STATE_FAILURE = -1; //表示失败 /** *@Fields 成功返回: 1 失败返回:-1 或 其他错误码 */ private Integer errcode; /** *@Fields 返回成功或失败的信息提示. */ private String message; /** *@Fields 返回的数据,不管是单个对象还是对个对象,统一放到List中. */ private List data; /** * @Fields expfield : 扩展字段 */ private String expfield; private TxResult(int code, String message, Object object, String expfield) { this.errcode = code; this.message = message; this.expfield = expfield; if (null != object) { if(object instanceof List) { //如果是列表则 this.data = (List) object; }else { List
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72933.html
摘要:的子模块我们先讲层,因为我想把配置在这里也说下。长这样我们接下来看看每个子模块如何编写。二子模块搭建子模块搭建子模块配置在将之前,我们先将的配置文件,使用一个全局的配置文件或,我们推荐使用文件。 现在,我们来搭建一个简单的分模块的SSM开发框架吧, 一: 分析并创建项目 先来简单分析下我们项目的结构: 比如:我现在搭建一个管理系统,我们把项目分为: tx-parent 顶级父项目(公...
摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...
摘要:一项目简介模仿抖音做的一个短视频微信小程序,用搭建小程序后台,用框架搭建短视频后台管理系统,小程序后台通过分布式监听节点自动下载或删除短视频后台管理系统上传的视频。 一、项目简介 模仿抖音做的一个短视频微信小程序,用SpringBoot搭建小程序后台,用SSM框架搭建短视频后台管理系统,小程序后台通过分布式zookeeper监听节点自动下载或删除短视频后台管理系统上传的视频。 二、环境...
阅读 2782·2021-11-15 18:02
阅读 3709·2021-10-14 09:43
阅读 3689·2021-09-08 10:41
阅读 2457·2019-08-30 15:53
阅读 1777·2019-08-30 14:14
阅读 1843·2019-08-29 16:12
阅读 3106·2019-08-29 14:03
阅读 1243·2019-08-29 13:46