使用jdbc查询mysql数据库封装成对象列表并使用thyemeleaf循环取出遇到的坑

最近在学习spring boot,想着用jdbc连接mysql数据库,查询取出数据封装成对象并返回一个列表,然后通过thyemeleaf取出展现给前端。这期间遇到了不少的坑。
文件目录如下:


项目目录

1首先是pom.xml中引入依赖

    
        
            org.springframework.boot
            spring-boot-starter-jdbc
               
      
            mysql
            mysql-connector-java
            runtime
        
                
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
  

2然后是自建的application.yml中配置数据库信息

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/scrapy_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
  thymeleaf:
    cache: false

这里的url后面如果不加?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai会报错。

数据库中信息如下:

mysql中数据

3编写与数据库对应的实体类person

public class Person {
    private String name;
    private String age;
    private String sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}

这里实体类里不能单独有有参构造函数,要么无参构造和有参构造都写出来要么都不写,否则会报错(曾经卡过我)

4编写Dao接口和实现方法

#Dao接口
public interface PersonDao {
    List findAll();
}

#Dao实现方法
@Repository
public class PersonDaoImp implements PersonDao{
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public List findAll() {
        String sql = "select * from person";
        List query = this.jdbcTemplate.query(sql, new BeanPropertyRowMapper(Person.class));
        return query;

    }
}

这里的实现方法要通过@Repository添加到容器中

5编写service和实现方法

##接口
public interface PersonService {
    List findAll();

}

##实现方法
@Service
public class PersonSerImp implements PersonService{
    @Autowired
    PersonDaoImp personDaoImp;

    @Override
    public List findAll() {
        return personDaoImp.findAll();
    }
}

这里的实现方法野要通过@Service加入到容器中!

6编写controller文件

@Controller
public class mysqlController {
    @Autowired
    PersonSerImp personSerImp;
    @GetMapping("/mysql")
    public String map(Model model){
        List list = personSerImp.findAll();
        model.addAttribute("list",list);
        return "list";
    }

这里的model.addAttribute("list",list);千万不要写成model.addAttribute("list","list")!!!!

7编写list.html




    
    振振有词
    



姓名 年龄 性别

8启动项目输入网址

浏览器打开网址

你可能感兴趣的:(使用jdbc查询mysql数据库封装成对象列表并使用thyemeleaf循环取出遇到的坑)