SpringBoot整合JDBC, Mybatis框架

一、SpringBoot整合JDBC

1. 创建SpringBoot项目,添加依赖,驱动等配置:



  org.springframework.boot
  spring-boot-starter-jdbc




  mysql
  mysql-connector-java
  runtime




  org.springframework.boot
  spring-boot-starter-web

2. 在application.yml中配置数据源:

这里需要注意的一点就是配置下时区就行。serverTimezone=GMT%2B8或者serverTimezone=UTC

spring:
  datasource:
    username: 
    password: 
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

3. 查看数据库连接

@SpringBootTest
class JdbcintegrationApplicationTests {

    @Autowired
    DataSource dataSource;

    @Test
    void contextLoads() throws SQLException {
        //查看默认数据源   class com.zaxxer.hikari.HikariDataSource
        System.out.println(dataSource.getClass());
        //获取数据库连接
        Connection connection = dataSource.getConnection();
        // xxxx Template:Springboot已经配置好模板bean,拿来即用 CRUD
        System.out.println(connection);
        connection.close();
        System.out.println("finish");
    }
}

4. 使用JdbcTemplate

Sprint框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发。在Springboot中存在着大量的xxxx Template模板,这种主要就是实现了一些常见的JDBC操作,点进源码查看,就是进行了一些初始化,并把一些场景的JDBC操作给封装了。
SpringBoot整合JDBC, Mybatis框架_第1张图片
具体使用如下:

@RestController
public class JDBCController {
    @Autowired
    JdbcTemplate jdbcTemplate;
    //查询数据库的所有信息
    //没有实体类,数据库中的数据怎么获取
    @GetMapping("/userList")
    public List> userList(){
        String sql = "select * from user";
        List> listMaps = jdbcTemplate.queryForList(sql);
        return listMaps;
    }

    @GetMapping("/addUser")
    public String addUser(){
        String sql = "insert into mybatis.user(id,name,pwd) values(5,'小明','123456')";
        jdbcTemplate.update(sql);
        return "add-ok";
    }

    @GetMapping("/updateUser/{id}")
    public String updateUser(@PathVariable("id") int id){
        String sql = "update mybatis.user set name=?,pwd=? where id="+id;
        //封装
        Object[] objects = new Object[2];
        objects[0]="小明2";
        objects[1] = "123456";
        jdbcTemplate.update(sql,objects);
        return "update-ok";
    }

    @GetMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable("id") int id){
        String sql = "delete from mybatis.user where id = ?";
        jdbcTemplate.update(sql,id);
        return "delete-ok";
    }
}

二、SpringBoot整合mybatis

1. 导入依赖,驱动等

        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.4
        

        
            org.springframework.boot
            spring-boot-starter-jdbc
        

        
            mysql
            mysql-connector-java
            runtime
        

        
            org.springframework.boot
            spring-boot-starter-web
        

2. 编写UserMapper接口:

@Mapper注解:说明这个接口是一个Mybatis映射器,也可以在Spring配置类中使用@MapperScan(“com.example.mapper”)注解来扫描映射器,这两个使用一个就行。
@Repository:将映射器添加到容器,表明这是Dao的Bean

//@Mapper这个注解表示了这是一个mybatis 的mapper类; @Repository表明这是Dao的Bean
@Mapper
@Repository
public interface UserMapper {

    List queryUserList();

    User queryUserById(Integer id);

    int addUser(User user);

    int updateUser(User user);

    int deleteUser(Integer id);
}

3. 编写UserMapper.xml

这其实就类似之前写的impl实现类一样。





    

    

    
        insert into user(id,name,pwd) values (#{id},#{name},#{pwd})
    

    
        update user set name=#{name},pwd=#{pwd} where id = #{id}
    

    
        delete from user where id = #{id}
    

在这里容易出现一个错误,详情参考
常见错误调试

4. 在application.properties中配置mybatis

spring.datasource.username= 
spring.datasource.password= 
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#整合mybatis
mybatis.type-aliases-package=com.example.springbootmybatis.pojo
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

编写Controller方法,进行测试:

@RestController 相比于controller,主要是这个直接返回字符串,这样在界面上显示比较直观。

@RestController
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping("/queryUserList")   //url都是用get请求
    public List queryUserList(){
        List userList = userMapper.queryUserList();
        for(User user : userList){
            System.out.println(user);
        }
        return userList;
    }

    @GetMapping("/addUser")
    public String addUser(){
        userMapper.addUser(new User(5,"x1","12345"));
        return "add-ok";

    }

    @GetMapping("/updateUser")
    public String updateUser(){
        userMapper.updateUser(new User(5,"x2","123456"));
        return "update-ok";
    }

    @GetMapping("/deleteUser")
    public String deleteUser(){
        userMapper.deleteUser(5);
        return "delete-ok";
    }

}

参考博客
https://javabook.shiguangping.com/frame4/%E6%95%B4%E5%90%88Mybatis%E6%A1%86%E6%9E%B6.html
https://javabook.shiguangping.com/frame4/%E6%95%B4%E5%90%88JDBC.html

你可能感兴趣的:(java开发,mybatis,jdbc,spring,boot)