当前位置: 首页 > news >正文

佛山做pc端网站惠州网站建设方案推广

佛山做pc端网站,惠州网站建设方案推广,山东省城乡与建设厅网站首页,JAVA做的小型网站有哪些目录 1. 快速开始 1. 创建user表 2. 插入几条数据 3. 创建一个新的springboot项目 4. 导入mybatis-plus依赖 5. 在配置文件中进行配置 6. 编写实体类 7. 编写Mapper 接口类 8. 添加 MapperScan 注解 9. 测试 ​编辑2. CRUD 1. 插入一条语句 2. 根据主键id删除一条记录 3. 根据…

目录

1. 快速开始

       1. 创建user表

        2. 插入几条数据

        3. 创建一个新的springboot项目

        4. 导入mybatis-plus依赖

        5. 在配置文件中进行配置

        6. 编写实体类

        7. 编写Mapper 接口类

        8. 添加 @MapperScan 注解

        9. 测试

​编辑2. CRUD

        1. 插入一条语句

        2. 根据主键id删除一条记录

        3. 根据条件构造器wrapper进行删除

        4. 根据主键id进行查找

        5. 根据主键id进行批量查找

        6. 根据map中指定的列名和列值进行等值匹配查找

        7. 根据 wrapper 条件查询

        8. 根据主键id进行更新

        9. 根据条件构造器wrapper进行更新

​编辑3. 分页

        0. 配置分页插件

        1. 通过selectPage方法分页

        2. 通过selectMapsPage方法分页

4. 自增列的值(generated key)

5. 联接查询

        1. 创建一个新表(order表)并插入数据

        2. 创建Order实体类

        3. 联合查询

        4. 测试


1. 快速开始

       1. 创建user表

DROP TABLE IF EXISTS `user`;
CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL
);

        2. 插入几条数据

INSERT INTO user (username, password) VALUES ('alice', 'password123');
INSERT INTO user (username, password) VALUES ('bob', 'securepass');
INSERT INTO user (username, password) VALUES ('charlie', 'mypassword');

        3. 创建一个新的springboot项目

        4. 导入mybatis-plus依赖

        <!-- springboot3 导入以下依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version></dependency><!-- springboot2 导入以下依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency>

        导入mysql依赖

        <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>

        导入lombok依赖

        <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

        5. 在配置文件中进行配置

        application.properties

# 数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT%2B8
spring.datasource.username=账号
spring.datasource.password=密码# MyBatis-Plus 配置
# 指定MyBatis-Plus使用StdOutImpl作为日志实现,这意味着SQL日志将输出到标准输出(通常是控制台)。
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

        或 application.yml

# 数据库配置
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT%2B8username: 账号password: 密码# MyBatis-Plus 配置
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

        6. 编写实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {private Integer id;private String username;private String password;
}

        7. 编写Mapper 接口类

public interface UserMapper extends BaseMapper<User> {
}

        8. 添加 @MapperScan 注解

        在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹

@SpringBootApplication
@MapperScan("com.huan.mybatis_plus_learn.mappers")//Mapper所在的类路径
public class MybatisPlusLearnApplication {public static void main(String[] args) {SpringApplication.run(MybatisPlusLearnApplication.class, args);}}

        9. 测试

@SpringBootTest
class MybatisPlusLearnApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void testSelect() {System.out.println(("----- selectAll method test ------"));List<User> userList = userMapper.selectList(null);Assert.isTrue(3 == userList.size(), "");for (User user : userList){System.out.println(user);}}
}

        控制台输出:


2. CRUD

        以下的方法都是BaseMapper接口中默认有的,直接使用即可。

        1. 插入一条语句

        直接使用BaseMapper接口中的insert(T entity)方法。

    @Testpublic void testInsert(){User user = new User();user.setUsername("huan");user.setPassword("123456");int insert = userMapper.insert(user);System.out.println(insert);}

        但测试发现,插入的字段的id为负数。

        要使id字段正常自增,需要给实体类的id字段添加@TableId(value = "id", type = IdType.AUTO)注释,用于标识数据库表的主键字段,IdType.AUTO 表示主键值由数据库自动生成,通常用于自增主键。

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName
@ToString
public class User {//添加注释@TableId(value = "id", type = IdType.AUTO)private Integer id;private String username;private String password;
}

        2. 根据主键id删除一条记录

    @Testpublic void testDeleteById(){int delete = userMapper.deleteById(1);System.out.println(delete);}

        控制台输出。

        数据库内容。

        3. 根据条件构造器wrapper进行删除

    @Testpublic void testDelete(){// 创建条件构造器QueryWrapper<User> queryWrapper = new QueryWrapper<>();// 添加条件:用户名为 "huan"queryWrapper.eq("username", "huan");// 执行删除操作int deleteCount = userMapper.delete(queryWrapper);System.out.println("删除了 " + deleteCount + " 条记录");}

        控制台输出。

        4. 根据主键id进行查找

    @Testpublic void testSelectById(){User user = userMapper.selectById(2);System.out.println(user);Assert.notNull(user, "User must not be null");}

        控制台输出。

        5. 根据主键id进行批量查找

    @Testpublic void testSelectBatchIds(){List<User> users = userMapper.selectBatchIds(List.of(5, 2, 3));users.forEach(user -> System.out.println(user));}

        控制台输出。

        6. 根据map中指定的列名和列值进行等值匹配查找

    @Testpublic void testSelectByMap(){List<User> users = userMapper.selectByMap(Map.of("username", "huan", "password", "123456"));users.forEach(user -> System.out.println(user));}

        控制台输出。

        7. 根据 wrapper 条件查询

    @Testpublic void testSelectList(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//指定查询字段为id,usernamequeryWrapper.select("id", "username");List<User> users = userMapper.selectList(queryWrapper);users.forEach(user -> System.out.println(user));}

        控制台输出。

        8. 根据主键id进行更新

    @Testpublic void testUpdateById(){User user = new User();user.setId(5);user.setUsername("huan");user.setPassword("huan");int update = userMapper.updateById(user);User user1 = userMapper.selectById(5);System.out.println(user1);}

        控制台输出。

        9. 根据条件构造器wrapper进行更新

    @Testpublic void testUpdate(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();// 指定查询条件 username="huan"queryWrapper.eq("username", "huan");queryWrapper.select("id", "username");User user = new User();user.setUsername("huan1");userMapper.update(user, queryWrapper);//这里查询不到,因为huan改为了huan1userMapper.selectList(queryWrapper).forEach(u -> System.out.println(user));}

        控制台输出。


3. 分页

        0. 配置分页插件

@Configuration
@ComponentScan
public class MybatisPlusConfig {/*** 添加分页插件*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbTypereturn interceptor;}
}

        1. 通过selectPage方法分页

    @Testpublic void testSelectPage(){// 创建分页对象 当前页,每页数据数Page<User> page = new Page<>(2,2);// 执行分页查询IPage<User> userPage = userMapper.selectPage(page, null);// 获取查询结果List<User> users = userPage.getRecords();long total = userPage.getTotal();long pages = userPage.getPages();// 输出查询结果System.out.println("总记录数:" + total);System.out.println("总页数:" + pages);users.forEach(user -> System.out.println(user));}

        控制台输出。

        2. 通过selectMapsPage方法分页

        该方法与selectPage的区别在于,selectMapsPage方法会将查询结果封装为一个Map<String,Object>。

    @Testpublic void testSelectMapsPage(){// 创建分页对象Page<Map<String, Object>> page = new Page<>(2, 2);// 执行分页查询IPage<Map<String, Object>> userPage = userMapper.selectMapsPage(page, null);// 获取查询结果List<Map<String, Object>> users = userPage.getRecords();long total = userPage.getTotal();long pages = userPage.getPages();// 输出查询结果System.out.println("总记录数:" + total);System.out.println("总页数:" + pages);users.forEach(user -> System.out.println(user));}

        控制台输出。

4. 自增列的值(generated key)

        在 MyBatis-Plus 中,insert 方法可以直接获取自增列的值(generated key)。当你在实体类中使用 @TableId 注解并设置 typeIdType.AUTO 时,MyBatis-Plus 会自动处理自增主键的生成和赋值。

        也就是说,MyBatis-Plus 会自动将主键的值赋值给实体类的对应字段,我们可以通过get方法直接取到主键的值。

    @Testpublic void testInsert(){User user = new User();user.setUsername("huan");user.setPassword("123456");int insert = userMapper.insert(user);System.out.println("插入后的用户ID:" + user.getId());}

        控制台输出。

5. 联接查询

        1. 创建一个新表(order表)并插入数据

CREATE TABLE `order` (id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id BIGINT NOT NULL,goods_name VARCHAR(255) NOT NULL,goods_price DECIMAL(10, 2) NOT NULL
);
INSERT INTO `order` (user_id, goods_name, goods_price) VALUES (2, 'Laptop', 999.99);
INSERT INTO `order` (user_id, goods_name, goods_price) VALUES (2, 'Smartphone', 499.99);
INSERT INTO `order` (user_id, goods_name, goods_price) VALUES (3, 'Headphones', 199.99);
INSERT INTO `order` (user_id, goods_name, goods_price) VALUES (5, 'Monitor', 299.99);
INSERT INTO `order` (user_id, goods_name, goods_price) VALUES (2, 'Keyboard', 49.99);

        2. 创建Order实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Order {@TableId(value = "id", type = IdType.AUTO)private Integer id;private Integer userId;private String goodsName;private Double goodsPrice;
}

        3. 联合查询

        在Mapper中添加联合查询的方法,通过自定义 SQL 语句和@Select注解来实现。

public interface UserMapper extends BaseMapper<User> {//联合查询//查询user表和order表中user表中id和order表中id相等的数据//u.* 表示user表的所有字段@Select("SELECT u.*, o.goods_name, o.goods_price FROM user u INNER JOIN `order` o ON u.id = o.user_id WHERE u.id = #{userId}")List<Map<String, Object>> selectUserWithOrders(@Param("userId") Integer userId);
}

        4. 测试

    @Testpublic void testSelectUserWithOrders(){List<Map<String, Object>> userWithOrders = userMapper.selectUserWithOrders(2);userWithOrders.forEach(user -> System.out.println(user));}

        控制台输出。

干饭去....

参考链接:

1. mybatis-plus官网

2. https://juejin.cn/post/6961721367846715428

http://www.shuangfujiaoyu.com/news/29757.html

相关文章:

  • 做网站销售东西 需要什么资质百度推广代理加盟
  • ftp上传wordpress网站要多久app运营需要做哪些
  • 做网站一定要psd吗百度搜索风云榜小说总榜
  • 网站做整合页面seo网站排名优化教程
  • 建立网站坐等访问者发现怎样做网络推广营销
  • wordpress的主题说明博客seo优化技术
  • wordpress 医院模板下载淄博seo公司
  • 淄博专业网站设计中文域名交易平台
  • 做网站哪个语言好跨境电商平台有哪些?
  • 中小企业网站制作哪家好如何进行搜索引擎优化?
  • web开发就是做网站吗相亲网站排名前十名
  • 建设网站证书不受信任提交百度一下
  • 青岛中企动力做网站怎么样网络营销的四种形式
  • 优酷视频接到网站怎么做郑州网络公司
  • 专业做网站建设公司哪家好域名估价
  • 创建个人商城网站yahoo搜索引擎入口
  • 网站后台无法审核网站建设公司开发
  • 惠州市住房和城乡规划建设局官方网站百度北京总部电话
  • 网站黑色代码成都网站制作费用
  • 广东网站优化公司友情链接交换系统
  • 网页美工设计的四大原则seo搜索引擎实战详解
  • 网站空间上传软件公司怎么在百度上推广
  • 网站模板 百科如何做一个营销方案
  • 新手创业开什么店最好南京seo公司哪家
  • 南昌地宝网seo公司 杭州
  • excel表格做网站百度推广二级代理商
  • 竞价推广怎么做上海seo服务
  • 自己怎么优化网站排名seo网站优化培训公司
  • 郑州专业网站制作建设河南郑州网站推广优化外包
  • 360ssp里的网站建设网站定制开发