当前位置:   article > 正文

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

JDBC是什么意思?

JDBC是使用java语言操作mysql数据库的规范,java语言必须按照这个规范写才可以操作mysql数据库。

mysql-connector-java

在最开始的时候 程序中是不允许使用java语言操作mysql数据库的 但是mysql-connector-java打破了这个局面。简单来说就是mysql-connector-java允许了可以通过java去操作mysql数据库。mysql-connector-java相当于是mysql数据库的客户端。

mysql-connector-java是Mysql提供的实现了JDBC定义的驱动,什么是JDBC呢?JDBC是一种规范,定义了Java语言该如何去操作数据库,也就是实现相关的API,是一种java语言操作数据库的接口规范。

相关代码

Connection connection = null;
Statement statement = null;
ResultSet rs = null;
int count;

try {
  connection = dataSource.getConnection();
  statement = connection.createStatement();
  rs = statement.executeQuery("select count(*) from foo");
  if(rs.next()) {
    count = rs.getInt(0);
  }
} catch (SQLException exp) {
  throw new RuntimeException(exp);
} finally {
  if(connection != null) {
    try { connection.close(); } catch (SQLException exp) {}
  }
  if(statement != null) {
    try { statement.close(); } catch (SQLException exp) {}
  }
  if(rs != null) {
    try { rs.close(); } catch (SQLException exp) {}
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

上面的代码是最原始的java操作mysql数据库的结构,可以说很麻烦,因此才有了后面的spring-boot-starter-jdbc。

spring-boot-starter-jdbc

spring-boot-starter-jdbc是Spring提供的,它基于mysql-connector-java又进行了封装,使得java操作mysql的方法更加的简单化了。
其实最主要的还是spring-boot-starter-jdbc中引入了操作mysql数据库的模板JdbcTemplate。我们上面已经说了JDBC其实就是表示一种规范,一种Java操作Mysql的规范 包括怎么连接mysql 怎么接收返回值 这个过程要怎么写?
所以JdbcTemplate类其实就是提供了一种新的JDBC模板,让我们之前的java操作mysql的规范更加的简单化了。

相关代码如下:

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
int count = jdbcTemplate.queryForObject("select count(*) from foo", Integer.class);
// 稍微复杂些的,代码来自下面提到的链接
public Book findBookInfo(String id) {
	String sql = "select * from tb_book where id=?";
    Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
    return book;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

也就是mysql-connector-java提供的是JDBC,而spring-boot-starter-jdbc提供的是更加简化版的JDBC-----JdbcTemplate。

mybatis-spring-boot-starter

mybatis-spring-boot-start是更加简化版的JDBC,它比起spring-boot-starter-jdbc提供的JDBC规范更加的简化。最大的特点就是SQL书写更加的舒服了,可以放到mapper.xml文件里面。而且sql书写可以和接口分开,什么意思呢?比方说mysql-connector-java提供的JDBC,写完sql语句之后 下面就要写调用接口了 如下图:
在这里插入图片描述
而spring-boot-starter-jdbc提供的JDBCTemplate新的规范,也是需要把sql语句和接口写在一块的 如下图:
在这里插入图片描述
但是如果是mybatis-spring-boot-starter的话,我们就可以把sql语句写到mapper.xml映射文件中,然后接口单独写到动态代理接口中,想要操作数据库的时候,直接调用动态代理接口就可以了 无需再在动态代理接口中传入sql语句,这样是不是方便了很多。
如下:

@Mapper
@Repository
public interface LoginDao {
    void insertUser(@Param("ID") String ID, @Param("password") String password, @Param("phone") String phone);
}
  • 1
  • 2
  • 3
  • 4
  • 5
<mapper namespace="com.dao.LoginDao">
    <insert id="insertUser">
        INSERT INTO user(ID,
                         phone,
                         password)
        VALUES(#{ID},
               #{phone},
               #{password});
    </insert>
    
    <select id="selectEquipment" resultType="Equipment">
        SELECT *
        FROM equipment
        WHERE username = #{username}
    </select>
</mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/479433
推荐阅读
相关标签
  

闽ICP备14008679号