1、先導入mybatis依賴
<!-- mybatis依賴 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- mybatis-spring-boot整合包 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
(>v<)不要忘記數據庫連接驅動
<!-- mysql驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- jdbc 連接技術 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>
<!-- c3p0 連接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
2、mybatis的配置文件
mybatis官網:http://www.mybatis.org/mybatis-3/getting-started.html
Building SqlSessionFactory from XML
在 MyBatis 中,使用 SqlSessionFactoryBuilder創建SqlSessionFactory ,進而來創建 SqlSession。一旦你獲得一個 session 之後,你可以使用它來執行映射語句,提交或回滾連接,最後,當不再需要它的時候,你可以關閉 session。
mybatis核心配置文件
<?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>
<!-- database Connection 抽出放在spring的application.xml文件,也可以在.yml文件中配置 -->
</configuration>
3、配置數據庫連接文件(applicationContext-datasource.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置數據庫連接-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/testdb"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
</bean>
</beans>
3、接下來寫一個簡單的業務處理
controller層 ——> service層 ——> dao層 ——> DB
來個簡單的新增記錄,新建表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`username` varchar(50) NOT NULL COMMENT '用戶名',
`password` varchar(50) NOT NULL COMMENT '密碼',
`uname` varchar(50) NOT NULL COMMENT '姓名',
`sex` tinyint(4) NOT NULL COMMENT '性別',
`age` tinyint(4) NOT NULL COMMENT '年齡',
`updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最後更新時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
創建實體類 UserEntity ,我懶(=v=)代碼省略
controller類
package com.example.demo.controller;
import com.example.demo.entity.UserEntity;
import com.example.demo.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/insert")
public String insertTest(UserEntity user){
user = new UserEntity();
user.setUsername("ilovefood");
user.setPassword("123456");
user.setUname("kite");
user.setSex(1);
user.setAge(16);
//調用service層方法
userService.insertUser(user);
return "添加記錄成功!";
}
}
service層
package com.example.demo.service;
import com.example.demo.entity.UserEntity;
public interface IUserService {
void insertUser(UserEntity user);
}
package com.example.demo.service.impl;
import com.example.demo.dao.IUserDao;
import com.example.demo.entity.UserEntity;
import com.example.demo.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Override
public void insertUser(UserEntity user) {
//調用dao層方法
userDao.insert(user);
}
}
dao層
package com.example.demo.dao;
import com.example.demo.entity.UserEntity;
public interface IUserDao {
void insert(UserEntity user);
}
映射器
<?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="com.example.demo.dao.IUserDao">
<select id="insert" resultType="com.example.demo.entity.UserEntity">
INSERT into
user (username,password,uname,sex,age,updatetime)
VALUES (#{username},#{password},#{uname},#{sex},#{age},#{updatetime})
</select>
</mapper>
配置映射器文件(applicationContext-dao.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring.xsd">
<!--mybatis掃描-->
<mybatis:scan base-package="com.example.demo.dao"/>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置數據源-->
<property name="dataSource" ref="dataSource"/>
<!--mybatis核心配置文件-->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
<!--配置mybatis的映射器-->
<property name="mapperLocations" value="classpath:com/example/demo/dao/mapper/*Mapper.xml"/>
</bean>
</beans>
@ImportResource 加載xml文件
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
//@SpringBootApplication(scanBasePackages = "com.example.demo.controller")
@SpringBootApplication
@ImportResource("classpath:spring/applicationContext-*.xml")
@EnableAutoConfiguration
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
*小筆記
classpath和classpath*區別:
classpath:只會到你的class路徑中查找找文件。
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進行查找。
注意: 用classpath*:需要遍歷所有的classpath,所以加載速度是很慢的;因此,在規劃的時候,應該儘可能規劃好資源文件所在的路徑,儘量避免使用classpath* (來源:https://www.cnblogs.com/EasonJim/p/6709314.html)
然而,第一次運行報錯:Field userDao in com.example.demo.service.impl.UserServiceImpl required a bean of type 'com.example.demo.dao.IUserDao' that could not be found.
找不到 userDao bean ??? 怎麼會找不到,難道沒掃描到嗎?(檢查一番,改有的註解都有了)
解決方案:
pom.xml 中 build resource ,將 mapper.xml 文件打包
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>com/example/demo/dao/mapper/*Mapper.xml</include>
</includes>
</resource>
</resources>
</build>
最後成功運行,地址欄輸入請求URL
數據庫user表
success!