「尚硅谷」java实战项目谷粒商城简介_idea_通用mapper

一、简介

1、为什么我们要讲电商?

因为就互联网平台来说,电商网站有很多典型的特征:

  • 访问量大
  • 数据量大
  • 涉及的技术多
  • 有一定的业务复杂性
  • 涉及支付 考虑一定安全性

2、我们能从这个项目中学到什么?

巩固以前知识,学会应用:

要新掌握的知识

需要掌握的解决方案

二、 Intellij idea

1、介绍

IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn、github等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java等少数语言

比起Eclipse的好处:

2、安装

解压就可以。

方案一:

前提需要将

0.0.0.0 account.jetbrains.com 添加到hosts文件中

第二种方式 需要有网络的情况下才能注册成功

且在注册成功的情况下,没有网络只能打开第一次,如果打开多次,有可能会需要重新联网注册

进入ide主页面,help-register-license server,然后输入
http://idea.iteblog.com/key.php

3、使用

3.1 Project与module

在idea中没有workspace的概念,每一个窗口只能打开一个Project。 对于单一工程的项目,直接建一个Project在其下面开发就好了。

单一工程的项目:

但是我们知道现在稍微大一点的项目都是多项目的分布式部署的,那么岂不是每个子工程都要打开一个窗口?

这时候就需要用到Module的概念,Module是项目的子模块,可以独立运行的工程,当一个多项目组成的系统时,Project下本身可以不拥有代码,而是作为一种顶级的管理目录,所有的代码都放到各个module之中。

下面我们在这个Project下增加Module,

这个时候因为要从网上读取模板所以务必保持联网状态,Spring Initalizr是springboot工程的模板。

这时候看到Project中多了一个demo1的Module的。

其实这时候Project工程下的src就没什么用了,可以删掉。

模块建立好了,我们就来用springmvc标签建一个controller看看好不好使。

controller代码

@Controller
public class Demo1Controller {
@ResponseBody
@RequestMapping("testDemo")
public String testDemo(){
return "hello demo";
}
}

运行Demo1Application中的main方法

用浏览器测试:

3.2 从Git中clone项目

首先要去GitHub上创建一个项目

注意的地方是记得加一个README,这样clone下来的工程就不是空的了。

这个就是咱们的仓库地址,咱们来进行第一次复制

如果弹出提示框如下,问你是否要自动提交某些文件,请一律选NO,且不再提醒。否则系统会自动提交一些不必要的文件。

4、界面颜色风格

setting->Appearance

5、idea的快捷键

5.1 常用快捷键

智能补全 引包 alt+Enter

由方法自动生成返回值变量 ctrl+alt+v

跳到方法的实现类 ctrl+alt+b

从实现类跳转到接口ctrl+u

显示某个接口、抽象类的实现类、子类 ctrl+h

显示最近编辑的文件ctrl+e

查看方法参数 ctrl+p

查看方法文档 ctrl+q

复制行 ctrl+D

删除行 ctrl+Y

跳转到上一个/下一个位置 ctrl+alt+左右

大小写切换 ctrl+shift+u

5.2 Debug:

F8 执行下一行 (相当于eclipse的 F6)

F7 跳入内部 (相当于eclipse的 F5)

F9 继续执行 (相当于eclipse的 F8)

热部署 ctrl+shift+F9 (仅debug模式)

5.3 搜索

全文搜索文本 ctrl+shift+f

全文替换文本 ctrl+shift+r

搜索类 ctrl+n

任何地方搜索 双击shift

5.4 快速录入

查看快速录入列表 ctrl+j

foreach iter

普通for循环 fori

循环数组 itar

迭代器遍历 itco

psvm 主函数

pfs 常量

生成代码块: try/ if / for/ while/ synchronized

ctrl+alt+t

6、手工加入快捷键模板

7、配置maven

三、EZDML工具

配置: 工具—>修改ini配置

[DefaultFieldTypes]

[CustFieldTypes]

1=bigint

2=decimal

[DbConn]

四、通用Mapper的使用

1、搭建module

依赖选Web和Mysql, Jdbc,MyBatis

注意Module位置要在Project路径下面

2、配置通用Mapper

在pom.xml文件中,加入

<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>


GmallUserManageApplication.java 中增加注解

@SpringBootApplication
@MapperScan(basePackages = "com.atguigu.gmall.usermanage.mapper")
public class GmallOrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(GmallOrderServiceApplication.class, args);
}
}

3、配置数据源

在application.properties中

spring.datasource.url=jdbc:mysql://localhost:3306/gmall?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123123

表结构

CREATE TABLE `user_info` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',

`login_name` varchar(200) DEFAULT NULL COMMENT '用户名称',

`nick_name` varchar(200) DEFAULT NULL COMMENT '用户昵称',

`passwd` varchar(200) DEFAULT NULL COMMENT '用户密码',

`name` varchar(200) DEFAULT NULL COMMENT '用户姓名',

`phone_num` varchar(200) DEFAULT NULL COMMENT '手机号',

`email` varchar(200) DEFAULT NULL COMMENT '邮箱',

`head_img` varchar(200) DEFAULT NULL COMMENT '头像',

`user_level` varchar(200) DEFAULT NULL COMMENT '用户级别',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='用户表'

4、代码开发

说明

controller

UserManageController

web

service

UserManageService

接口

service.impl

UserManageServiceImpl

实现类

bean

UserInfo

实体bean

mapper

UserInfoMapper

mapper接口

4.1 bean

public class UserInfo implements Serializable{
@Id
@Column
private String id;
@Column
private String loginName;
@Column
private String nickName;
@Column
private String passwd;
@Column
private String name;
@Column
private String phoneNum;
@Column
private String email;
@Column
private String headImg;
@Column
private String userLevel;

}

注意:@Column 和@Id 都是javax.persistence包中的

技巧 idea快捷键:alt+insert可以快速插入getter 和setter

4.2 Mapper

public interface UserInfoMapper extends Mapper<UserInfo> {
}

注意: Mapper也是引用
tk.mybatis.mapper.common.Mapper包中的

Idea 有的时候校验@Autowired不准 可以把校验关闭

settings -> Inspections -> spring->spring core -> code-> Autowiring for Bean class

4.4 service

public interface UserManageService {
public List<UserInfo> getUserInfoList(UserInfo userInfoQuery);
public UserInfo getUserInfo(UserInfo userInfoQuery);
public void delete(UserInfo userInfoQuery);
public void addUserInfo(UserInfo userInfo);
public void updateUserInfo(UserInfo userInfo);
}

4.5 ServiceImpl

@Service
public class UserManageServiceImpl implements UserManageService {
@Autowired
UserInfoMapper userInfoMapper;
//查询所有
public List<UserInfo> getUserInfoList(UserInfo userInfoQuery){
List<UserInfo> userInfos=null;
//查询所有
//userInfos = userInfoMapper.selectAll();
//条件匹配查询
//userInfos =userInfoMapper.select(userInfoQuery);
//特殊条件匹配查询 比如:按姓氏匹配

Example example=new Example(UserInfo.class);
example.createCriteria().andLike("loginName","%"+userInfoQuery.getLoginName()+"%");
userInfos = userInfoMapper.selectByExample(example);
return userInfos;
}
//查询单表
public UserInfo getUserInfo(UserInfo userInfoQuery){
UserInfo userInfo=null;
//按主键查找
// userInfo = userInfoMapper.selectByPrimaryKey(userInfoQuery.getId());
//按所有非空值查询 必须只有一行 否则报错

userInfo = userInfoMapper.selectOne(userInfoQuery );
return userInfo;
}
//增加用户
public void addUserInfo(UserInfo userInfo){
//会覆盖数据默认值
userInfoMapper.insert(userInfo);
// 不会覆盖数据库默认值
userInfoMapper.insertSelective(userInfo);
}
public void updateUserInfo(UserInfo userInfo){
//修改用户 依靠主键去查询 ,然后更新其他值,如果某个值为空,那么原值被清空
// userInfoMapper.updateByPrimaryKey(userInfo);
//修改用户 依靠主键去查询 ,然后更新其他不为空的值.
// userInfoMapper.updateByPrimaryKeySelective(userInfo);
//修改用户 依靠自定义条件去修改

Example example=new Example(UserInfo.class);
example.createCriteria().andLike("loginName","%"+userInfo.getLoginName()+"%");
userInfo.setLoginName(null);
// userInfoMapper.updateByExample( userInfo,example );
userInfoMapper.updateByExampleSelective( userInfo,example );
//
}
public void delete(UserInfo userInfoQuery){
userInfoMapper.deleteByPrimaryKey(userInfoQuery.getId());
//按非空值匹配删除
// userInfoMapper.delete(userInfoQuery);
//按条件匹配删除
// userInfoMapper.deleteByExample(new Example(UserInfo.class));

}

4.6 Controller


@RestController
public class UserManageController {
@Autowired
UserManageService userManageService;
@RequestMapping("/users")
public ResponseEntity<List<UserInfo>> getUserList( UserInfo userInfo){
List<UserInfo> userInfoList = userManageService.getUserInfoList(userInfo);
return ResponseEntity.ok().body(userInfoList);
}
@RequestMapping(value = "/user" ,method = RequestMethod.POST)
public ResponseEntity<Void> add(UserInfo userInfo){ ;
userManageService.addUserInfo(userInfo);
return ResponseEntity.ok().build();
}
@RequestMapping(value = "/user" ,method = RequestMethod.PUT)
public ResponseEntity<Void> update(UserInfo userInfo){
userManageService.updateUserInfo(userInfo);
return ResponseEntity.ok().build();
}
@RequestMapping(value = "/user" ,method = RequestMethod.DELETE)
public ResponseEntity<Void> delete(UserInfo userInfo){
userManageService.delete(userInfo);
return ResponseEntity.ok().build();
}
@RequestMapping(value = "/user" ,method = RequestMethod.GET)
public ResponseEntity<UserInfo> getUserInfo(UserInfo userInfoQuery){
UserInfo userInfo = userManageService.getUserInfo(userInfoQuery);
return ResponseEntity.ok().body(userInfo);
}

五、hosts工具

application.properties

spring.datasource.url=jdbc:mysql://mysql.server.com:3306/gmall?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123123
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值