本篇博客主要讲述如何利用Spring Boot框架快速搭建spring+springMVC+Mybatis简单Demo。网上关于这块的demo,blog都很多,比较杂乱。于是就准备自己亲自踩下坑了。
导出来的Demo中的pom.xml长这个样子:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <finalName>cett</finalName> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project>在application.properties中完成相关配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/cett?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=true spring.datasource.username=root spring.datasource.password=root spring.datasource.driver=com.mysql.jdbc.Driver一定要加上@Repository这个注解,不然会报错。 配置sql语句有两种方式:注解和xml文件。xml文件要与映射器名字相同。
在相同目录下创建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="com.csdc.cett.mapper.UserMapper"> <resultMap id="userInfo" type="com.csdc.cett.model.entity.User"> <id property="id" column="c_id"/> <result property="name" column="c_name"/> </resultMap> <select id="findUserById" resultMap="userInfo" parameterType="java.lang.String"> SELECT * FROM t_user WHERE c_id = #{id} </select> <select id="findAllUser" resultMap="userInfo"> SELECT * FROM t_user WHERE 1 = 1 </select> <insert id="saveUser" parameterType="com.csdc.cett.model.entity.User"> <--生成主键id值--> <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> SELECT UUID() </selectKey> insert into t_user(c_id, c_name) values (#{id}, #{name}) </insert> <update id="updateUser"> UPDATE t_user SET c_name = #{name} WHERE c_id = #{id} </update> </mapper> 创建Spring Boot主类 @SpringBootApplication @MapperScan("com.csdc.cett.mapper") public class CettApplication extends SpringBootServletInitializer { public static void main(String[] args) throws Exception { SpringApplication.run(CettApplication.class, args); } }@MapperScan("com.csdc.cett.mapper")这个注解是用来告诉Mybatis 映射文件的路径,不然在Service层使用@Autowire注解调用的时候会报错。
Service调用映射器 @Service public class UserService implements Serializable{ @Autowired private UserMapper userMapper; //保存账号 @Transactional(isolation = Isolation.READ_COMMITTED) public int saveUser(User user){ return userMapper.saveUser(user); } //通过id获取账号 @Transactional(isolation = Isolation.READ_COMMITTED) public User findUserById(String id){ return userMapper.findUserById(id); } //删除账号 @Transactional(isolation = Isolation.READ_COMMITTED) public void deleteUserById(String id){ userMapper.deleteUserById(id); } //更新账号 @Transactional(isolation = Isolation.READ_COMMITTED) public void updateUser(User user){ userMapper.updateUser(user); } public List<User> getAllUsers(){ return userMapper.findAllUser(); } }本人用的是IDEA,如果把映射器的xml文件放在java包下,IDEA是不会把它加载成资源文件的。所以要在pom.xml文件里加入以下代码:
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> <filtering>false</filtering> </resource> </resources>至此,用Spring Boot搭建spring+springMVC+Mybatis简单Demo就讲解完啦。