上一篇文章介绍了如何使用spring-boot搭建一个简单的web应用。这篇重点介绍如何把mybatis引入到其中。
1、pom.xml中引入:
<properties> <mybatis-spring-boot>1.2.0</mybatis-spring-boot> <mysql-connector>5.1.39</mysql-connector> </properties> <!-- Spring Boot Mybatis 依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot}</version> </dependency> <!-- MySQL 连接驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector}</version> </dependency>
整个工程结构如下图
2、entity实体类:
public class Test { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
3、dao接口:
public interface TestDao { /** * 根据名称,查询test信息 * * @param name 名 */ Test findByName(@Param("name") String n); }
Mybatis是基于接口编程的,我们写好接口,对应编写映射文件中的sql语句即可,非常灵活。
4、mapper.xml文件:
在resources文件夹下新建一个mapper文件夹,里面存放mybatis的mapper 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="nc.edu.nuc.dao.mysql.TestDao"> <resultMap id="BaseResultMap" type="nc.edu.nuc.entity.Test"> <result column="id" property="id" /> <result column="name" property="name" /> </resultMap> <parameterMap id="Test" type="nc.edu.nuc.entity.Test"/> <sql id="Base_Column_List"> id,name </sql> <select id="findList" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from test </select> <select id="findByName" resultMap="BaseResultMap" parameterType="java.lang.String"> select <include refid="Base_Column_List" /> from test where name = #{name} </select> <insert id="save" parameterType="Test"> insert into test (name) values (#{name}) </insert> </mapper>
5、service类:
@Service public class TestService{ @Autowired private TestDao testDao; public Test findByName(String name) { return testDao.findByName(name); } }
6、controller接口:
@Controller public class TestController { @Autowired private TestService testService; @RequestMapping("test") @ResponseBody public String home(HttpServletRequest request) { String name = request.getParameter("name"); Test findByName = testService.findByName(name); return findByName.toString(); } }
7、启动类:
@SpringBootApplication //mapper 接口类扫描包配置 @MapperScan("nc.edu.nuc.dao.mysql") public class App { public static void main( String[] args ) { SpringApplication.run(App.class, args); } }
在启动泪伤添加一个@MapperScan的注解,也可以在每一个Dao类上添加一个@Mapper的注解。
application.properties:
##mysql配置 spring.datasource.url=jdbc:mysql://jy.ttengine.w.abc.db:1883/ttengine?useUnicode=true&characterEncoding=utf8 spring.datasource.username=ttengine spring.datasource.password=TTengine123 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ## Mybatis配置 mybatis.typeAliasesPackage=cn.edu.nuc.springbootmybatis.entity mybatis.mapperLocations=classpath:mapper/*.xml # 页面默认前缀目录 spring.mvc.view.prefix=/WEB-INF/page/ spring.mvc.view.suffix=.jsp
参考:https://github.com/JeffLi1993/springboot-learning-example