Mybatis實體類和數據庫表之間的映射關系:


關於Mybatis實體類和數據庫表之間的映射關系:

1、使用原生方式,即不使用工具和插件的方法:

  例如:最簡單的springboot的demo;

  1.1、實體類的類名及屬性要和數據庫表名和字段名遵循下划線轉駝峰命名格式;

  1.2、因為Mapper接口沒有實現類,所以需要用代理方式動態生成其對應的實現類,實現的方式有兩種:

    (1)在Mapper接口上用@Mapper注解,生成該類的實現類,@Mapper的包是 org.apache.ibatis.annotations.Mapper;

    (2)如果有很多Mapper接口,在接口上用注解太麻煩,就需要在springBoot的啟動類上用@MapperScan注解,括號中是包名路徑,表示生成該包下所有接口的實現類;

      

 1 import org.mybatis.spring.annotation.MapperScan;
 2 import org.springframework.boot.SpringApplication;
 3 import org.springframework.boot.autoconfigure.SpringBootApplication;
 4 //import tk.mybatis.spring.annotation.MapperScan; //一個是org,一個是tk
 5 
 6 /**
 7  * @author TT
 8  */
 9 @SpringBootApplication
10 @MapperScan("com.thl.mapper")  //掃描mapper包下所有的mapper接口,如果還有其他包也需要生成實現類,括號中可以用數組方式配置多個包路徑
11 public class SpringBootTkMapperApplication {
12 
13     public static void main(String[] args) {
14         SpringApplication.run(SpringBootTkMapperApplication.class, args);
15     }
16 
17 }

  1.3、如果還有對應的*mapper.xml文件(用tk.mapper,單表的CRUD可以不用*mapper.xml),需要配置掃描resources下的mapper的xml文件;我是在application.properties文件中配置的;

  1.4、如果沒有用resultMap標簽配置映射關系,入參用的是實體類,即用的resultType標簽,則還需要配置下划線轉駝峰的規則,不然字段映射不上。

      如果用了resultMap標簽,返回類型也是的話,則不需要配置下划線轉駝峰規則,字段可以映射,但是以防萬一,建議配置上,反正不影響什么;

 1 #端口
 2 server.port=8081
 3 #數據庫配置
 4 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
 5 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/rbac
 6 spring.datasource.username=root
 7 spring.datasource.password=123456
 8 #可以直接使用包名
 9 mybatis.type-aliases-package=com.thl.domain
10 #掃描resources下mapper包路徑下所有的xml文件
11 mybatis.mapper-locations=classpath:/mapper/*.xml
12 #下划線轉駝峰配置
13 mybatis.configuration.map-underscore-to-camel-case=true

2、用工具類,例如用tk.mapper

  2.1、單表的增刪改查已經封裝好了,如果不需要額外寫sql的話,連mapper.xml文件都不需要寫,因為它自動做了映射。

  2.2、其次的話就是前面提到的xml文件中的<resultMap>標簽,這個標簽非常強大,可以指定數據庫表的字段和實體類的屬性之間的映射關系,指定好后就能封裝成我們想要的對象;

 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.thl.mapper.RoleMapper">
 4   <resultMap id="BaseResultMap" type="com.thl.domain.Role">
 5     <!--
 6       WARNING - @mbg.generated
 7     -->
 8     <id column="id" jdbcType="INTEGER" property="id" /> //指定主鍵
 9     <result column="name" jdbcType="VARCHAR" property="name" /> //指定name屬性
10     <result column="is_disabled" jdbcType="INTEGER" property="isDisabled" />//指定isDisabled屬性,這里就自己做了映射
11   </resultMap>
12   <select id="queryAll" resultMap="BaseResultMap" parameterType="com.thl.domain.Role"> //這里用封裝好的BaseResultMap對象
13     select * from `role` where id = #{id}
14  </select> 15 </mapper>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM