Spring Boot 实战:分别基于 MyBatis 与 JdbcTemplate 的数据库操作方法实 ...

打印 上一主题 下一主题

主题 1033|帖子 1033|积分 3099

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 数据库新建表

  1. CREATE TABLE `table_emp`(
  2.   id INT AUTO_INCREMENT,
  3.   emp_name CHAR(100),
  4.   age INT,
  5.   emp_salary DOUBLE(10,5),
  6.   PRIMARY KEY(id)
  7. );
  8. INSERT INTO `table_emp`(emp_name,age,emp_salary) VALUES("tom",18,200.33);
  9. INSERT INTO `table_emp`(emp_name,age,emp_salary) VALUES("jerry",19,666.66);
  10. INSERT INTO `table_emp`(emp_name,age,emp_salary) VALUES("andy",20,777.77);
复制代码
2. 数据库表模子Bean

  1. @Data
  2. public class Emp {
  3.     private Integer id;
  4.     private String empName;
  5.     private Integer age;
  6.     private Double empSalary;
  7. }
复制代码
3. 导入sql依赖

在pom.xml中添加依赖
  1. <dependency>
  2.         <groupId>com.mysql</groupId>
  3.         <artifactId>mysql-connector-j</artifactId>
  4.         <scope>runtime</scope>
  5. </dependency>
复制代码
4. 数据库配置

在 application.properties 中新增配置
  1. spring.application.name=mybatis-01-helloworld
  2. spring.datasource.url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/harrylin
  3. spring.datasource.username=root
  4. spring.datasource.password=******
  5. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
复制代码
5. JdbcTemplate的实现方法

5.1 编写Dao接口

  1. public interface EmpDao {
  2.     Emp getEmpDaoById(Integer id);
  3. }
复制代码
5.2 编写接口实现类

此处通过sql查询出来的结果是通过jdbcTemplate的queryForObject方法完成类和结果的映射,此中类是由方法入参Emp.class决定。
  1. @Repository
  2. public class EmpDaoImpl implements EmpDao {
  3.     @Autowired
  4.     JdbcTemplate jdbcTemplate;
  5.     @Override
  6.     public Emp getEmpDaoById(Integer id) {
  7.         String sql = "select * from table_emp where id = ?";
  8.         Emp emp = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Emp.class), id);
  9.         return emp;
  10.     }
  11. }
复制代码
6.  MyBatis的实现方法

6.1 导入mybatis依赖

在pom.xml中添加依赖
  1. <dependency>
  2.         <groupId>org.mybatis.spring.boot</groupId>
  3.         <artifactId>mybatis-spring-boot-starter</artifactId>
  4.         <version>3.0.3</version>
  5. </dependency>
复制代码
6.1 编写mapper接口

注意,此处接口注解有别于JdbcTemplate接口注解,需标注@Mapper,而非@Repository
  1. @Mapper  // 告诉Spring 这是myBatis操作数据库用的接口
  2. public interface EmpMapper {  // Mapper接口
  3.     // 按照id查询
  4.     Emp getEmpById(Integer id);
  5. }
复制代码
6.2 编写mapper.xml实现

此文件可通过安装mybatisX插件
然后把光标停留在mapper接口处,Alt+enter 自动生成mapper.xml文件,文件头自动生成。
此处通过sql查询出来的结果和类之间的映射是mybatis完成,类是由mapper.xml配置中的
resultType全定名类决定的
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.hongshan.mybatis.mapper.EmpMapper">
  4.     </select>
  5.     <select id="getAllEmp" resultType="com.hongshan.mybatis.bean.Emp">
  6.         select * from table_emp
  7.     </select>
  8. </mapper>
复制代码
6.3 编写配置

        在配置文件 application.properties 中新增配置
  1. # 告诉 mybatis xml 文件在哪里
  2. mybatis.mapper-locations=classpath:mapper/**.xml
  3. # 驼峰映射
  4. mybatis.configuration.map-underscore-to-camel-case=true
复制代码
 7. 测试

        这里自动注入时二者也有区别,JdbcTemplate使用的是实现类注入,
而mybatis是直接用的mapper接口注入
  1. @SpringBootTest
  2. class Mybatis01HelloworldApplicationTests {
  3.         @Autowired
  4.         EmpMapper mapper;
  5.         @Autowired
  6.         EmpDao empDao;
  7.         @Test
  8.         void getEmpById_test() {
  9.                 Emp empById = mapper.getEmpById(1);
  10.                 System.out.println(empById);
  11.         }
  12.         @Test
  13.         void getDaoEmpById_test(){
  14.                 Emp empDaoById = empDao.getEmpDaoById(1);
  15.                 System.out.println(empDaoById);
  16.         }
  17. }
复制代码
 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表