一、配置及准备工作
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 TABLEuser_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 interfaceUserService { intaddUser(UserInfo userInfo); UserInfo getUserByAccount(String account); }
@Service public class UserServiceImpl implementsUserService { @Autowired privateUserInfoMapper userInfoMapper; @Override public intaddUser(UserInfo userInfo) { returnuserInfoMapper.insert(userInfo); } @Override publicUserInfo getUserByAccount(String account) { returnuserInfoMapper.selectByPrimaryKey(account); } }
2、编写 Controller 类:
@RestController @RequestMapping("/user") public classUserController { @Autowired privateUserService userService; @RequestMapping(value = "account", method =RequestMethod.POST) public intaddUser(String account, String password, String nickname) { UserInfo userInfo = newUserInfo(); userInfo.setAccount(account); userInfo.setPassword(password); userInfo.setNickname(nickname); returnuserService.addUser(userInfo); } @RequestMapping(value = "account", method =RequestMethod.GET) publicUserInfo getUserByAccount(String account) { returnuserService.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 @interfaceTransactional { /**指定事务管理器 */@AliasFor("transactionManager") String value() default ""; /**指定事务的限定符 */@AliasFor("value") String transactionManager() default ""; /**事务传播行为,默认为支持当前事务,当前没有事务则创建一个 */Propagation propagation() defaultPropagation.REQUIRED; /**事务隔离级别,默认按数据库默认隔离级别 */Isolation isolation() defaultIsolation.DEFAULT; /**事务超时时间 */ int timeout() defaultTransactionDefinition.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 classDemoApplication { public static voidmain(String[] args) { SpringApplication.run(DemoApplication.class, args); } }