首页 > 其他分享 >springboot整合资源文件

springboot整合资源文件

时间:2023-08-23 12:33:47浏览次数:41  
标签:文件 springboot spring boot druid public 整合 new id

1:什么是SpringBoot?

SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过==简化配置==来进一步简化Spring应用的整个搭建和开发过程。另外SpringBoot还通过继承大量框架使依赖包的版本冲突,以及引用不稳定性等问题的到了很好的解决。

2:SpringBoot的优点

(1)可以创建独立的Spring应用程序,并且基于其MavenGradle插件,可以创建可执行的JARs和WARs;

(2)内嵌Tomcat或Jetty等Servlet容器;

(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;

(4)尽可能自动配置Spring容器;

(5)提供准备好的特性,如指标、健康检查和外部化配置;

(6)绝对没有代码生成,不需要XML配置。

3:如何使用SpringBoot搭建工程

springboot有两种搭建方式:

(1)快速搭建 --需联网

(2)使用meavn工程搭建

3.1快速搭建

 

 

 

 springboot中的配置

3.2:meavn搭建-了解

1:创建一个meavn工程

2:pom中添加依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--继承父工程-->
    <parent>
         <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.7.5</version>
    </parent>
    <groupId>com.ykq</groupId>
    <artifactId>qy168-springboot02</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--引入web启动依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

3:创建一个springboot配置文件-----application

4:创建一个主动类

@SpringBootApplication
public class SpringBootApp {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootApp.class,args);
    }
}

4:Java读取springboot配置文件中的内容

4.1:springboot配置的种类

springboot提供了两种格式的配置文件,内容格式不同。

第一种:属性文件。后缀:properties

第二种:yaml文件。后缀:yml

如果两种配置文件内容相同:以properties文件为主,如果内容不同两种都能用

4.2:如何读取springboot配置文件中的内容。

PringBoot中提供了两种方式:

第一种:@Value

 

这种方式只能一个一个的取值。且只能读取文件中的基本数据类和字符串。

第二种:@ConfigurationProperties

这种方式可以取任意的值

5:spring注册web组件

servlet:-----(1)定义一个Servlet类 (2)重写doGet和doPost方法 (3)把自定义的serlvet注册到web.xml文件。

filter: ----(1)定义一个filter类 (2)dofilter方法 (3)把自定义的过滤器注册到web.xml

思考: 我们现在的springboot工程没有web.xml文件了。如何把自定义或者第三方的过滤器注册到tomcat容器中。

5.1:注册自定义的Servlet

(1)自定义一个servlet方法

public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了doget方法");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了doPost方法~~~~~~~~~~~~~~~~~~~~~~~");
    }
}

(2)把自定义的service注册到内置tomcat中

@Configuration //等价于spring配置文件.
public class MyConfiguration {

    @Bean //相当于spring配置文件中 <bean class="">  把该方法返回的对象交于spring容器来管理了
    public ServletRegistrationBean<Servlet> registrationBean(){
        ServletRegistrationBean<Servlet> registrationBean=new ServletRegistrationBean<>();
        registrationBean.setServlet(new MyServlet());
        registrationBean.setName("my");
        registrationBean.addUrlMappings("/my");//路径
        return registrationBean;
    }
}

3:测试:

 5.2:注册自定义过滤器

1:创建一个过滤器并重写应用方法。

public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("经过了过滤器~~~~~~~~~~~~~~~~~~~~~~~~");
    }
}

2:把自定义过滤器注册到内置tomcat种

@Bean
    public FilterRegistrationBean<Filter> registrationBean02(){
        FilterRegistrationBean<Filter> registrationBean=new FilterRegistrationBean<>();
        registrationBean.setFilter(new MyFilter());
        registrationBean.setName("myFilter");
        registrationBean.addUrlPatterns("/*");
        return registrationBean;
    }

6:springboot自动扫描包的原理

1:查看@SpringBootApplication注解

(1)第一层含义自动包扫描 第二层含义自动装配

7:SpringBoot自动装配原理

原理: 主启动类上的@SpringBootApplication注解上,而该注解是一个复合组件,而在复合注解中存在@EnableAutoConfiguration, 这个@EnableAutoConfiguration注解也是一个复合注解,包含@Import---而@Import注解导入一个AutoConfigurationImportSelector 【自动配置选择器】,在该类中存在一个方法getAutoConfigurationEntry --作用:得到自动配置类的实体。而这些自动配置类会完成相应的自动装配。

 8:springboot整合数据源--连接数据库

8.1 设置默认数据源

1:引入相关依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

springboot自动配置会加载jdbc的自动配置类---读取springboot配置文件中数据源的信息,从而完成数据源的自动配置。

2:apolication配置文件中配置数据源

spring.datasource.druid.driver-classname=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=root
spring.datasource.druid.url=jdbc:mysql://localhost:3306/dbaaa?serverTimezone=Asia/Shanghai

3:测试

@SpringBootTest
class Qy168Springboot03ApplicationTests {

    @Autowired
    private DataSource dataSource;//springboot帮你完成数据源的自动装配
    @Test
    void contextLoads() throws SQLException {
        System.out.println(dataSource.getConnection());
    }
}

8.2:设置Druid数据源

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>

修改配置文件

spring.datasource.druid.driver-classname=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=自己的密码
spring.datasource.druid.url=jdbc:mysql://localhost:3306/dbaaa?serverTimezone=Asia/Shanghai
初始化链接对象的个数
spring.datasource.druid.initial-size=5
最多的连接数
spring.datasource.druid.max-active=10

测试:

9:springboot整合mybatis框架

ssm===>spring框架需要配置SqlSessionFactoryBean对象,还有配置DAO接口代理实际类。

springboot会自动配置SqlSessionFactoryBean对象,必须引入statrter依赖

1:依赖

  <!--mybatis和springboot整合的依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

2:创建实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer id;
private String name;
private Integer age;
private String email;
}

3:dao接口

public interface StudentDao {
public List<Student> findAll();
}

4:mapper映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zyj.dao.StudentDao">
<select id="findAll" resultType="com.zyj.entity.Student">
        select * from t_user
    </select>
</mapper

5:修改配置文件内容

 6:在主启动类上dao接口扫描配置

7:测试

 @Autowired
private StudentDao studentDao;
@Test
void testSelectById() {
Student student = studentDao.findAll();
System.out.println(student);
}

10: springboot整合pageHelper分页插件

  <!--pageHelper的依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.5</version>
        </dependency>

测试:

@Test
public void testFindAll(){
PageHelper.startPage(1,3);//拦截器: select * from t_user
List<User> all = userDao.findAll();
//把查询的结果封装到PageInfo类中
PageInfo<User> pageInfo=new PageInfo<>(all);
System.out.println("总条数:"+pageInfo.getTotal());
System.out.println("总页数:"+pageInfo.getPages());
System.out.println("当前页的记录:"+pageInfo.getList());
}

11:综合案例

1:创建springboot工程并引入相关的依赖

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2:修改配置文件

#修改端口号
server.port=8888
#数据源
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=root
spring.datasource.druid.url=jdbc:mysql://localhost:3306/qy168?serverTimezone=Asia/Shanghai
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=10

#mybatis映射文件的路径
mybatis.mapper-locations=classpath:/mapper/*.xml

3:创建实体类

tbl_dept

@Data
public class Dept {
private Integer did;
private String dname;
private String loc;
}

tbl_emp

@Data
public class Emp {
private Integer id;
private String name;
private double salary;
private Date birthday;
private String headImg;
private Integer deptId;
private Dept dept;
}

4:接口和映射文件

public interface EmpDao {

//增加
public int insert(Emp emp);

//删除
public int deleteById(Integer id);

//修改
public int update(Emp emp);

//根据id查询员工信息
public Emp selectById(Integer id);

//查询所有
public List<Emp> selectAll();
}
Mapper映射文件
   <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace必须和dao接口的名称一模一样-->
<mapper namespace="com.zyj.dao.EmpDao">

<!--返回你添加时数据库生成的主键值-->
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into tbl_emp values(null,#{name},#{salary},#{birthday},#{deptId},#{headImg})
</insert>
<update id="update">
update tbl_emp set name=#{name},salary=#{salary},birthday=#{birthday},dept_id=#{deptId},headImg=#{headImg}
where id=#{id}
</update>
<delete id="deleteById">
delete from tbl_emp where id=#{id}
</delete>
<!--sql片段-->
<sql id="empSql">
id,name,salary,birthday,dept_id deptId,headImg
</sql>
<select id="selectById" resultType="com.zyj.entity.Emp">
select
<include refid="empSql"/>
from tbl_emp where id=#{id}
</select>

<!--查询所有员工携带部门信息-->
<resultMap id="baseEmpMapper" type="com.zyj.entity.Emp" autoMapping="true">
<id property="id" column="id"/>
<result property="deptId" column="dept_id"/>
<association property="dept" javaType="com.zyj.entity.Dept" autoMapping="true">
<id property="did" column="did"/>
<result property="dname" column="d_name"/>
</association>
</resultMap>
<select id="selectAll" resultMap="baseEmpMapper">
select * from tbl_emp e join tbl_dept d on e.dept_id=d.did
</select>
</mapper>

5:service业务层

public interface EmpService {

public Result deleteById(int id);

public Result update(Emp emp);

public Result insert(Emp emp);

public Result findById(Integer id);

public Result findAll(Integer current,Integer pageSize);
}
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpDao empDao;
@Override
@Transactional
public Result deleteById(int id) {
int row = empDao.deleteById(id);
return row>0?new Result(200,"删除成功",null):new Result(500,"删除失败",null);
}

@Override
public Result update(Emp emp) {
int row = empDao.update(emp);
return row>0?new Result(200,"删除成功",null):new Result(500,"删除失败",null);
}

@Override
public Result insert(Emp emp) {
int row = empDao.insert(emp);
return row>0?new Result(200,"删除成功",emp):new Result(500,"删除失败",null);
}

@Override
public Result findById(Integer id) {
Emp emp = empDao.selectById(id);
return new Result(200,"查询成功",emp);
}

@Override
public Result findAll(Integer current, Integer pageSize) {
PageHelper.startPage(current,pageSize);
List<Emp> emps = empDao.selectAll();
PageInfo<Emp> pageInfo=new PageInfo<>(emps);
return new Result(200,"查询成功",pageInfo);
}
}

Controller层

@RestController
@RequestMapping("/emp")
public class EmpController {
@Autowired
private EmpService empService;
@DeleteMapping
public Result deleteById(Integer id){
return empService.deleteById(id);
}

@PostMapping
public Result insert(@RequestBody Emp emp){
return empService.insert(emp);
}

@PutMapping
public Result update(@RequestBody Emp emp){
return empService.update(emp);
}

@GetMapping
public Result getById(Integer id){
return empService.findById(id);
}


@GetMapping("/getAll")
public Result getAll(Integer current,Integer pageSize){
return empService.findAll(current, pageSize);
}


}

12:整合定时器

可以在规定时间内执行相应的代码。

比如:OSS文件上传-OSS的文件文件冗余的文件。---指定时间删除防止文件冗余

1:引入定时器依赖

<!--引入定时器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency

2:编写业务代码。

@Component
public class My {

    @Autowired
    private EmpDao empDao;
    //定时任务执行的代码
    @Scheduled(cron = "1-2 * * * * ? ")
    public void show(){
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~");
        //可以写自己的写完代码
        empDao.delete();
    }
}

3:开启定时注解驱动

@SpringBootApplication
@MapperScan(basePackages = "com.zyj.dao.StudentDao")
@EnableScheiling//开启定时注解驱动
@EnableSwagger2
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

13:springboot整合swagger接口文档

开发流程:

接口文档的作用:方便前后端交互。

需要在线接口文档: --swagger2

1:如何使用swagger2

<!--引入swagger2依赖-->
 <dependencies>
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.1.RELEASE</version>
</dependency>
<!--图形化依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>

2:创建一个swagger配置类

@Configuration
public class MySwaggerConfiger {
@Bean
public Docket docket(){
Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(getInfo()).select().
apis(RequestHandlerSelectors.basePackage("com.zyj.controller")).build();
return docket;
}
private ApiInfo getInfo(){
Contact DEFAULT_CONTACT = new Contact("","","");
ApiInfo info = new ApiInfo("QY168班级", "员工管理系统API", "v1.0", "http://www.jd.com",
DEFAULT_CONTACT, "Apache 2.0",
"http://www.baidu.com", new ArrayList<VendorExtension>());
return info;
}
}

3:开启swagger2的注解启动

 测试

 从文档中我们发现接口文档的名称为英文-需使用swagger的注解

@Api:接口类的说明 加在controller类上

@ApiOperation: 接口方法的说明。 加在controller方法上

@ApiImplicitParams: 接口方法的所有参数的说明.

@ApiImplicitParam:单个参数的说明

--name: 参数名

--value: 参数的说明

--require: 是否为必须的

--dataType: 参数类型说明 int string

@ApiModel: 实体类的说明

@ApiModelProperty: 单个参数的说明

14:SpringBoot整合mp

mp:mybatis-puls地址:

https://baomidou.com/pages/24112f/

(1)依赖

<!--mp的依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

(2)application.properties

#内置tomcat
server.port=8080
#链接
spring.datasource.druid.driver-classname=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=你的密码
spring.datasource.druid.url=jdbc:mysql://localhost:3306/dbaaa?serverTimezone=Asia/Shanghai
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=10
# mapper映射文件路径
mybatis.mapper-locations=classpath:/mapper/*.xml
#sql日志-控制台
mybatis-plus.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl

3:实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer id;
private String name;
private Integer age;
private String email;

}

4:dao

public interface UserDao extends BaseMapper<User> {
}

5:扫描dao接口

@SpringBootApplication
@MapperScan(basePackages = "com.zyj.dao")
@EnableSwagger2//kaiqiswagger2注解
public class StuApplication {

public static void main(String[] args) {
SpringApplication.run(StuApplication.class, args);
}

}

6:测试:

@Autowired
private StudentDao studentDao;
//测试根据id查询用户信息.
/*
表名和实体类名不一致: 使用@TableName(value="表名")
列名和实体类名不一致: 使用@TableField(value="列名")
主键和实体的不一致| 不叫id 使用@TableId(value="主键列")
如果实体类中出现某个属性 不属于表里面的字段。 @TableField(exist = false) //数据库不存在该列
*/
@Test
void testSelectById() {
Student student = studentDao.selectById(1);
System.out.println(student);
}
/*
mp:(1)添加时完成主键生成策略.(2)把生成的主键返回给实体类。
思考: 能否修改主键的生成策略。默认生成的主键按照雪花算法。--生成的id全国唯一。Long类型
@TableId(value ="uid",type = IdType.AUTO ) //如果你使用AUTO类,表示它就会采用mysql表的递增策略
默认为ASSIGN_ID
*/
@Test
void testInsert(){
Student student=new Student(null,"高天瑞~22",152,"[email protected]");
System.out.println("添加前:"+student);
studentDao.insert(student);
System.out.println("添加后:"+student);
}
@Test
public void testUpdate(){
Student student = new Student(1, "王斌", 1, "[email protected]");
UpdateWrapper<Student> wrapper = new UpdateWrapper<>();
wrapper.eq("name","王");
wrapper.ge("age",18); // where age>=18
wrapper.between("age",15,25);// where age between 15 and 25;
wrapper.like("name","牛");//where name like '%牛%'
wrapper.ne("name","王轩"); //where name !='王轩'
wrapper.lt("age",25); //where age<25;
wrapper.notLike("name","王");
wrapper.or();//or
wrapper.ne("name","王轩"); //where name like '%王%' and name<>'王轩'
studentDao.update(student,wrapper);
}
//测试删除
@Test
public void testDelete(){
//根据主键删除
//int row = StudentDao.deleteById(1);
//deleteBatchIds: 批量删除
// List<Long> ids=new ArrayList<>();
// ids.add(1L);
// ids.add(3L);
// ids.add(9L);
// studentDao.deleteBatchIds(ids); //where id in(1,3,9)
//根据其他条件删除--
UpdateWrapper<Student> wrapper=new UpdateWrapper<>();
wrapper.likeRight("name","刘");
studentDao.delete(wrapper);
}


//根据条件多条记录
@Test
public void testSelectAll(){
QueryWrapper<Student> wrapper=new QueryWrapper<>();
wrapper.like("name","王");
List<Student> users = studentDao.selectList(wrapper);
System.out.println(users);
}

//分页查询. 如果想让分页有效 必须配置分页拦截器。
/*

*/
@Test
public void testSelectByPage(){
IPage<Student> iPage=new Page(1,2);
QueryWrapper<Student> wrapper=new QueryWrapper<>();
wrapper.orderByDesc("uid");
IPage<Student> page = studentDao.selectPage(iPage, wrapper);//Page:分页对象 Wrapper:条件对象
System.out.println("总条数:"+page.getTotal());
System.out.println("总页数:"+page.getPages());
System.out.println("当前页的记录:"+page.getRecords());
}

15:mp完成链表分页查询

(1):编写dao接口方法

public interface EmpMapper extends BaseMapper<Emp> {

/**
* 联表分页查询----分页使用mp中自带的分页插件---而不是使用PageHelper
* @param page
* @param queryWrapper
* @return
*/
IPage<Emp> selectPageWithDept(IPage<Emp> page, @Param("ew") Wrapper<Emp> queryWrapper);
}

(2)编写映射文件的内容

<mapper namespace="com.zyj.system.mapper.EmpMapper">
<resultMap id="baseEmpMapper" type="com.zyj.system.entity.Emp" autoMapping="true">
<id property="id" column="id"/>
<result property="deptId" column="dept_id"/>
<association property="dept" javaType="com.zyj.system.entity.Dept" autoMapping="true">
<id property="did" column="did"/>
<result property="dname" column="d_name"/>
</association>
</resultMap>
<select id="selectPageWithDept" resultMap="baseEmpMapper">
select * from tbl_emp e join tbl_dept d on e.dept_id=d.did
<if test="ew!=null and ew.customSqlSegment!=null">
${ew.customSqlSegment}
</if>
</select>
</mapper>

(3)测试

@Autowired
private EmpMapper empDao;
//联表分页条件查询
@Test
public void testSelectPageWithDept(){
IPage<Emp> iPage=new Page(1,2);
QueryWrapper<Emp> wrapper=new QueryWrapper<>();
// wrapper.like("name","燕");
IPage<Emp> empIPage = empDao.selectPageWithDept(iPage, wrapper);

System.out.println("总页码:"+empIPage.getPages());
System.out.println("总条数:"+empIPage.getTotal());
System.out.println("当前页的记录:");
List<Emp> records = empIPage.getRecords();
for(Emp e:records){
System.out.println("姓名:"+e.getName()+";薪水:"+e.getSalary()+";所在部门名称:"+e.getDept().getDname());
}
}
}

16:代码生成器

(1)依赖

<!--mp新的的代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>

<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>

(2):代码生成器的内容

public class CodeGenerator02 {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/qy168?serverTimezone=Asia/Shanghai", "root", "密码")
                .globalConfig(builder -> {
                    builder.author("zyj") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D:Coke/stu/src/main/java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.zyj") // 设置父包名
                            .moduleName("system") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D:Coke/stu/src/main/resources/mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("tbl_class","tbl_student","t_user") // 设置需要生成的表名
                            .addTablePrefix("tbl_","t_"); // 设置过滤表前缀
                    builder.entityBuilder().enableLombok(); //是否开启lombok
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

标签:文件,springboot,spring,boot,druid,public,整合,new,id
From: https://www.cnblogs.com/zyjxm/p/17642134.html

相关文章

  • error LNK2019: 无法解析的外部符号 (VS2022创建QT文件)
    运行过程中,编译没有问题,但是在输出会显示以下问题 同时出现errorLNK2001、2019、1120,查询网上一些资料得知是链接过程中出现错误:属于的类型是包含符号定义的目标文件或库未链接。由于使用VS2022上拓展的工具QTVSTools创建的QT文件,在使用以下两个头文件:#include"QtNetWor......
  • Linux中特殊名字文件的删除方法是什么
    Linux中特殊名字文件的删除方法是什么发布时间:2022-01-2109:19:42 阅读:200 作者:kk 栏目:开发技术活动:Linux服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>今天就跟大家聊聊有关Linux中特殊名字文件的删除方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家......
  • 基于Springboot的个人网站的设计与实现-计算机毕业设计源码+LW文档
    一、设计(论文)选题的依据1.研究背景与意义现在越来越多的人关注网站的自动化设计与开发,什么是个人网站呢?它的出现和运营究竟承载这怎样的信息?这并不是每个人都清楚的很多人无法准确的理解个人网站的优势和作用,我对网站的认识还处于相当低的程度中所以在正文开始前我想先阐述自己对......
  • 使用 lorax 创建引导文件(boot.iso)
    简介:RedHatEnterpriseLinux的安装系统是由一个名为lorax的工具创建的。lorax 工具用于创建 Anaconda 安装程序boot.iso如以及基本的发布树和.treeinfo元数据文件。其依赖关系相当轻量级,因为它需要能够在模拟chroot中运行环境。最好从与目标相同的版本运行lora......
  • Vue+SpringBoot项目分离部署踩坑记录
    昨天花了一晚上终于成功部署了个人网站,在这个过程中踩了很多坑,现在回顾总结记录一下,以免今后继续犯错误前端:Vue后端:SpringBoot数据库:Mysql一、前端1、前端项目采用Nginx进行部署,其中Nginx配置文件部分内容如下nginx.conf部分内容1server{2listen443ssl......
  • Windows中创建虚假大文件以解决C盘满盘后的工作效率降低问题
    问题Windows系统的电脑经常出现C盘无缘无故满盘的情况,这种自动满盘的情况直到满盘达到只剩下几KB的时候系统才会自动将里面的一些Windows更新缓存给删除掉,很影响工作效率。尤其是当打开Photoshop这类软件时,只剩下1GB的C盘空间往往无法满足Photoshop缓存要求,这时候非常棘手,因为无......
  • Python基础入门学习笔记 028 文件:因为懂你,所以永恒
    大多数u程序都是:首先接收输入数据,然后按照要求进行处理,最后输出数据 虽然当前数据放在内存中存取的速度要比硬盘中快,但一旦断电则会丢失,所以尽量ctrl+s保持到硬盘中 什么是文件打开文件1open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,......
  • Python基础入门学习笔记 029 文件:一个任务
    •任务:将文件(record.txt)中的数据进行分割并按照以下规律保存起来:–小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)–小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)–文件中总共有三段对话,分别保存为boy_1.txt,girl_1.txt,boy_2.txt,girl_2.txt,boy_3.txt,......
  • Python基础入门学习笔记 030 文件系统:介绍一个高大上的东西
    os模块中关于文件/目录常用的函数使用方法>>>importos>>>os.getcwd()'D:\\python3.3.2\\小甲鱼python\\python程序\\第二十九课'>>>os.listdir('D:\\python3.3.2\\小甲鱼python\\python程序\\第二十九课')['boy_1.txt','boy_2......
  • 3文件信息编辑命令
    编辑出现异常中断​ 临时文件没有正常被删除恢复临时文件信息方法 vi-r需要编辑文件显示临时文件信息方法 vi-r/-L取消生成临时文件方法 vi-n需要编辑文件光标快速移动快捷方式(底,首,指定,行尾) ①.快速切换光标到底行行首 大写字母G 底行模式:$ ②.......