Spring Boot 整合之Mybatis
阿新 • • 發佈:2018-11-16
1.引入Mybatis、MySQL依賴
注意:這裡不引入spring-boot-starter-jdbc依賴,是由於mybatis-spring-boot-starter中已經包含了此依賴。
<!-- springboot,mybatis 整合包 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency>
MyBatis-Spring-Boot-Starter依賴將會提供如下:
- 自動檢測現有的DataSource。
- 將建立並註冊SqlSessionFactory的例項,該例項使用SqlSessionFactoryBean將該DataSource作為輸入進行傳遞。
- 將建立並註冊從SqlSessionFactory中獲取的SqlSessionTemplate的例項。
- 自動掃描您的mappers,將它們連結到SqlSessionTemplate並將其註冊到Spring上下文,以便將它們注入到您的bean中。
就是說,使用了該Starter之後,只需要定義一個DataSource即可(application.properties中可配置),它會自動建立使用該DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。會自動掃描你的Mappers,連線到SqlSessionTemplate,並註冊到Spring上下文中。
2.配置資料庫連線:
在 application.properties 中新增:
#資料連線 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root123 # mybatis 配置 mybatis.config-location=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
3.在 src/main/resources 下建立 mybatis 資料夾,並在 mybatis 資料夾中建立 "mybatis-config.xml" 配置檔案,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 獲取資料庫自增主鍵值 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 使用列別名替換列名,預設為 true -->
<setting name="useColumnLabel" value="true"/>
<!-- 開啟駝峰命名轉換:Table(create_time) => Entity(createTime) -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
mybatis 資料夾下再建立一個 "mapper" 資料夾,裡邊存放 Mpper 介面對應的 mapper 對映檔案。
4.測試
4.1建表
CREATE TABLE t_user(
u_id INT PRIMARY KEY auto_increment COMMENT "ID",
u_name VARCHAR(20) NOT NULL COMMENT "使用者姓名"
)COMMENT="使用者"
4.2實體類
package club.lygangdai.pojo;
public class User {
private Integer uId;
private String uName;
}
此處省略setter和getter
4.3Mapper介面
package club.lygangdai.dao;
import club.lygangdai.pojo.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserDao {
int insertUser(User user);
User getUserById(Integer uid);
int updateUser(User user);
int deleteUserById(Integer uid);
}
Mapper 介面需要新增 @Mapper 註解,如果不想使用該註解,可以在啟動類上使用 @MapperScan 配置 Mapper 介面路徑
@SpringBootApplication
@MapperScan("club.lygangdai.dao")
public class SpringbootMybatisJspApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisJspApplication.class, args);
}
}
mybatis/mapper/UserMapper.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="club.lygangdai.dao.UserDao">
<insert id="insertUser" parameterType="club.lygangdai.pojo.User">
insert into t_user(u_name) values(#{uName})
</insert>
<select id="getUserById" parameterType="java.lang.Integer" resultType="club.lygangdai.pojo.User">
select u_id,u_name from t_user where u_id = #{uId}
</select>
<update id="updateUser" parameterType="club.lygangdai.pojo.User">
update t_user set u_name = #{uName} where u_id = #{uId}
</update>
<delete id="deleteById" parameterType="java.lang.Integer">
delete from t_user where u_id = #{uId}
</delete>
</mapper>
4.4測試
4.4.1建立controller
@Controller
@RequestMapping("user")
public class UserController {
@Resource
private UserDao userDao;
@RequestMapping(value = "getUser",produces="text/html;charset=UTF-8")
@ResponseBody
public User getUser(){
User user = userDao.getUserById(1);
return user;
}
}
注:返回的是json格式,我之前已做配置
轉json請看https://blog.csdn.net/qq_40369944/article/details/83898752
資料庫新增一條預設資料
查詢結果: