「尚硅谷」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代码

  1.  
    @Controller
  2.  
    public class Demo1Controller {
  3.  
    @ResponseBody
  4.  
    @RequestMapping("testDemo")
  5.  
    public String testDemo(){
  6.  
    return "hello demo";
  7.  
    }
  8.  
    }

运行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文件中,加入

  1.  
    <!-- 通用mapper -->
  2.  
    <dependency>
  3.  
    <groupId>tk.mybatis</groupId>
  4.  
    <artifactId>mapper-spring-boot-starter</artifactId>
  5.  
    <version>1.2.3</version>
  6.  
    <exclusions>
  7.  
    <exclusion>
  8.  
    <groupId>org.springframework.boot</groupId>
  9.  
    <artifactId>spring-boot-starter-jdbc</artifactId>
  10.  
    </exclusion>
  11.  
    </exclusions>
  12.  
    </dependency>


GmallUserManageApplication.java 中增加注解

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

3、配置数据源

在application.properties中

  1.  
    spring.datasource.url=jdbc:mysql://localhost:3306/gmall?characterEncoding=UTF-8
  2.  
    spring.datasource.username=root
  3.  
    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

  1.  
    public class UserInfo implements Serializable{
  2.  
    @Id
  3.  
    @Column
  4.  
    private String id;
  5.  
    @Column
  6.  
    private String loginName;
  7.  
    @Column
  8.  
    private String nickName;
  9.  
    @Column
  10.  
    private String passwd;
  11.  
    @Column
  12.  
    private String name;
  13.  
    @Column
  14.  
    private String phoneNum;
  15.  
    @Column
  16.  
    private String email;
  17.  
    @Column
  18.  
    private String headImg;
  19.  
    @Column
  20.  
    private String userLevel;

}

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

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

4.2 Mapper

  1.  
    public interface UserInfoMapper extends Mapper<UserInfo> {
  2.  
    }

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

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

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

 

4.4 service

  1.  
    public interface UserManageService {
  2.  
    public List<UserInfo> getUserInfoList(UserInfo userInfoQuery);
  3.  
    public UserInfo getUserInfo(UserInfo userInfoQuery);
  4.  
    public void delete(UserInfo userInfoQuery);
  5.  
    public void addUserInfo(UserInfo userInfo);
  6.  
    public void updateUserInfo(UserInfo userInfo);
  7.  
    }

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

  1.  
     
  2.  
    @RestController
  3.  
    public class UserManageController {
  4.  
    @Autowired
  5.  
    UserManageService userManageService;
  6.  
    @RequestMapping("/users")
  7.  
    public ResponseEntity<List<UserInfo>> getUserList( UserInfo userInfo){
  8.  
    List<UserInfo> userInfoList = userManageService.getUserInfoList(userInfo);
  9.  
    return ResponseEntity.ok().body(userInfoList);
  10.  
    }
  11.  
    @RequestMapping(value = "/user" ,method = RequestMethod.POST)
  12.  
    public ResponseEntity<Void> add(UserInfo userInfo){ ;
  13.  
    userManageService.addUserInfo(userInfo);
  14.  
    return ResponseEntity.ok().build();
  15.  
    }
  16.  
    @RequestMapping(value = "/user" ,method = RequestMethod.PUT)
  17.  
    public ResponseEntity<Void> update(UserInfo userInfo){
  18.  
    userManageService.updateUserInfo(userInfo);
  19.  
    return ResponseEntity.ok().build();
  20.  
    }
  21.  
    @RequestMapping(value = "/user" ,method = RequestMethod.DELETE)
  22.  
    public ResponseEntity<Void> delete(UserInfo userInfo){
  23.  
    userManageService.delete(userInfo);
  24.  
    return ResponseEntity.ok().build();
  25.  
    }
  26.  
    @RequestMapping(value = "/user" ,method = RequestMethod.GET)
  27.  
    public ResponseEntity<UserInfo> getUserInfo(UserInfo userInfoQuery){
  28.  
    UserInfo userInfo = userManageService.getUserInfo(userInfoQuery);
  29.  
    return ResponseEntity.ok().body(userInfo);
  30.  
    }

五、hosts工具

 

application.properties

    1.  spring.datasource.url=jdbc:mysql://mysql.server.com:3306/gmall?characterEncoding=UTF-8
    2.  spring.datasource.username=root
    3.  spring.datasource.password=123123
posted @ 2022-03-17 10:05  Linux运维阿铭  阅读(275)  评论(0编辑  收藏  举报