當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot_数据访问-整合MyBatis(二)-配置版MyBatis
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot_数据访问-整合MyBatis(二)-配置版MyBatis
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面使用全注解的方式,我們寫了一個Mybatis的類,我們對數據庫進行增刪改查的操作,在實際開發中呢,我們也經常使用配置文件的方式,我們需要一個Mybatis的全局配置文件,包括寫一個映射文件,那我們就看一下配置文件的方式是怎么用呢,我來創建一個新的mapper,操作Employee這張表,它是一個interface,首先我們不管是配置文件還是注解的方式,都應該使用@Mapper,或者用@MapperScan的方式,一定要把這個接口掃描到這個容器中,這個是必不可少的,用SQL映射文件來對應這個mapper,我們mybatis目錄文件,我們再來創建一個mapper,我們在mapper下存所有的映射文件,來寫一個SQL映射文件,我們就得創建一個XML文件,這個SQL映射文件怎么寫呢,我們看一下官方文檔,mybatis都托管到github里面,mybatis的相關資料,我們來搜索mybatis,我們就是mybatis3,mybatis/mybatis-3https://github.com/mybatis/mybatis-3第一個就是mybatis的官方文檔MyBatis SQL mapper framework for Java http://mybatis.github.io/mybatis-3/這里有一個Getting started快速開始,示例里面有全局配置文件<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>mybatis-config.xml全局配置文件粘過來,<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration></configuration>SQL映射文件也在下邊<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper"><select id="selectBlog" resultType="Blog">select * from Blog where id = #{id}</select>
</mapper>SQL映射文件,首先在namespace上,跟接口綁定,我們把接口的全類名copy過來,這個接口有兩個方法,把這兩個方法用配置的方式配置在映射文件里面,第一個是查詢我們使用select標簽,id就是我們的方法名,方法的返回是resultType,指明方法的類型,應該用全類名,然后我們來寫SQL語句,插入沒有返回值,mybatis.config-location=classpath:mybatis/mybatis-config.xmlmybatis.mapper-locations=classpath:mybatis/mapper/*.xmlhttp://localhost:8080/emp/1{"id":1,"name":"張三1","gender":"男","title":"軟件開發工程師","email":"zhangsan1@126.com",
"salary":4000.0,"deptId":1}
#debug=true
#server.port=8081#server.context-path=/boot02spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=truelogging.level.com.learn=trace
#logging.file=D:/springboot.log
logging.file=springboot.log
#logging.path=/spring/log
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n
#spring.resources.static-locations=classpath:/hello,classpath:/learnspring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/day20
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
package com.learn.mapper;import org.apache.ibatis.annotations.Mapper;import com.learn.entities.Employee;//@Mapper或者@MapperScan將接口掃描裝配到容器中
@Mapper
public interface EmployeeMapper {public Employee getEmpById(Integer id);public void insertEmp(Employee employee);// @Select("select * from employee where id=#{id}")
// public Employee getEmpById(Integer id);
//
// @Update("update employee set NAME=#{name},email=#{email},gender=#{gender},deptId=#{deptId} where id=#{id}")
// public void updateEmp(Employee employee);
//
// @Delete("delete from employee where id=#{id}")
// public void deleteEmpById(Integer id);
//
// @Insert("insert into employee(NAME,email,gender,deptId) values(#{name},#{email},#{gender},#{deptId})")
// public void insertEmployee(Employee employee);
//
// @Select("select * from employee where NAME=#{name}")
// public Employee getEmpByLastName(String lastName);}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.learn.mapper.EmployeeMapper"><select id="getEmpById" resultType="com.learn.entities.Employee">select * from employee where id = #{id}</select><insert id="insertEmp">insert into employee(NAME,email,gender,deptId) values(#{name},#{email},#{gender}#{deptId})</insert></mapper>
package com.learn.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import com.learn.entities.Employee;
import com.learn.mapper.EmployeeMapper;@RestController
public class EmpController {@AutowiredEmployeeMapper employeeMapper;@GetMapping("/emp/{id}")public Employee getEmp(@PathVariable("id") Integer id) {return employeeMapper.getEmpById(id);}}
我們看到這個數據是查到了,我們這一塊did沒有值,是因為駝峰命名法沒有使用起來,我們就可以來全局配置文件里來配置了,參照mybatis的官方文檔,來到Configuration XML里面,我們看一下他的設置項http://www.mybatis.org/mybatis-3/configuration.html拿到mapUnderscoreToCamelCase,拿到它,然后設置為true<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><settings><setting name="mapUnderscoreToCamelCase" value="true"></settings>
</configuration>來重啟一下,這樣全局配置文件和SQL映射文件,也就能用了,我們發現這個dId就有值了,我們后來的配置就可以寫在配置文件里面了,那我們之前的注解版的departmentMapper能不能使用呢,我們再來發一個department請求http://localhost:8080/dept/1{"id":1,"deptName":"應用開發部","principal":"李經理","functional":"負責公司軟件業務的開發"}你發現也是能夠使用的,注解版你可以為他來寫Mapper文件,也可以使用注解版,都行,我們可以來混合使用的,主要的核心步驟呢,就是需要指定這一個mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml配置文件版,指定全局配置文件的位置,指定SQL映射文件的位置,這兩個一指定呢,mybatis的使用就和以前一模一樣了
?
總結
以上是生活随笔為你收集整理的SpringBoot_数据访问-整合MyBatis(二)-配置版MyBatis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot_数据访问-整合My
- 下一篇: SpringBoot高级-缓存-搭建re