一、配置及准備工作
1、在 Maven 的 pom 文件中新增以下依賴:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>runtime</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency>
2、在 application.properties 中配置 mysql 的鏈接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3、在數據庫中創建 user_info 表:
CREATE TABLE user_info ( account VARCHAR(20) NOT NULL PRIMARY KEY, nickname VARCHAR(20) NULL, phone CHAR(11) NULL, password CHAR(32) NOT NULL, email VARCHAR(50) NULL ) ENGINE = InnoDB DEFAULT CHARSET=utf8;
二、使用 mybatis generator 自動生成代碼
1、在 Maven 的 pom 文件中添加如下插件:
<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration>
<configurationFile>${basedir}/src/main/resources/mybatis-generator.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin>
2、將如下 mybatis-generator.xml 配置文件放入到 src/main/resources 目錄下:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 數據庫驅動:選擇你的本地硬盤上面的數據庫驅動包--> <classPathEntry location="/Users/tengyunhao/.m2/repository/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="false"/> <!-- 是否去除自動生成的注釋 true:是 : false:否 --> <property name="suppressAllComments" value="false"/> </commentGenerator> <!--數據庫鏈接URL,用戶名、密碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/demo" userId="root" password="123456"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.tengyunhao.demo.entity" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.tengyunhao.demo.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是數據庫中的表名或視圖名 domainObjectName是實體類名--> <table tableName="user_info" domainObjectName="UserInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
3、添加運行配置
點擊 run -> Edit Configurations
點擊 + 號,添加一個 Maven 的配置
4、運行
運行后我們就可以在相應的目錄下看到生成的代碼了,如圖:
三、基本使用
1、編寫 Service 接口及 Service 實現類:
public interface UserService { int addUser(UserInfo userInfo); UserInfo getUserByAccount(String account); }
@Service public class UserServiceImpl implements UserService { @Autowired private UserInfoMapper userInfoMapper; @Override public int addUser(UserInfo userInfo) { return userInfoMapper.insert(userInfo); } @Override public UserInfo getUserByAccount(String account) { return userInfoMapper.selectByPrimaryKey(account); } }
2、編寫 Controller 類:
@RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "account", method = RequestMethod.POST) public int addUser(String account, String password, String nickname) { UserInfo userInfo = new UserInfo(); userInfo.setAccount(account); userInfo.setPassword(password); userInfo.setNickname(nickname); return userService.addUser(userInfo); } @RequestMapping(value = "account", method = RequestMethod.GET) public UserInfo getUserByAccount(String account) { return userService.getUserByAccount(account); } }
給 UserMapper 加上 @Mapper 注解(我這不加注解會報錯)
3、配置 mybastis
首先在 application.properties 中新增如下配置:
mybatis.mapper-locations=classpath:mapping/*.xml
mybatis.config-location=classpath:mybatis-config.xml
然后將 mybatis-config.xml 配置文件放到 src/main/resources 目錄下:

<?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> <typeAliases> </typeAliases> </configuration>
4、運行項目進行測試
這時我們就可以啟動項目了。
另外 IDEA 提供了進行接口測試的工具,打開方式為 Tools -> Test RESTful Web Service,如下圖所示:
四、添加事務
我們只需要在 Service 實現類中的方法上加入 @Trasactional 注解,默認當拋出異常的時候就會觸發事務的回滾,從源碼角度來看一下如何使用其參數:
@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Transactional { /** 指定事務管理器 */ @AliasFor("transactionManager") String value() default ""; /** 指定事務的限定符 */ @AliasFor("value") String transactionManager() default ""; /** 事務傳播行為,默認為支持當前事務,當前沒有事務則創建一個 */ Propagation propagation() default Propagation.REQUIRED; /** 事務隔離級別,默認按數據庫默認隔離級別 */ Isolation isolation() default Isolation.DEFAULT; /** 事務超時時間 */ int timeout() default TransactionDefinition.TIMEOUT_DEFAULT; /** 讀寫或只讀事務,默認讀寫事務 */ boolean readOnly() default false; /** 觸發事務回滾的異常類 */ Class<? extends Throwable>[] rollbackFor() default {}; /** 同上 */ String[] rollbackForClassName() default {}; /** 不會導致事務回滾的異常類 */ Class<? extends Throwable>[] noRollbackFor() default {}; /** 同上 */ String[] noRollbackForClassName() default {}; }
在 Service 實現類加入 @Trasactional 注解后,還需要在入口類添加 @EnableTransactionManagement 注解,來開啟事務:
@EnableTransactionManagement @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }