springboot-mybatis 注解
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github 。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录
创建maven项目
创建完成如下结构:
在pom.xml中引入mybatis依赖包
<?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.springboot</groupId> <artifactId>springboot-mybatis</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-mybatis</name> <description>Demo project for Spring Boot</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.7</java.version> <mybatis-spring.version>1.3.2</mybatis-spring.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入数据库连接--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--mybatis分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version> </dependency> </dependencies> <build> <finalName>springboot-mybatis</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
在application.properties添加数据库配置
#服务端口 #server.port=8088 #server.context-path=/springboot #mysql数据连接 spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=root #spring.datasource.max-active=20 #spring.datasource.max-idle=8 #spring.datasource.min-idle=8 #spring.datasource.initial-size=20
编写实体类
package com.example.springboot.mybatis.entity; public class User { private String id; private String username; private String password; private String email; /** * 是否可用(0禁用,1可用) */ private Integer useable; /** * 创建时间 */ private String addtime; /** * 登陆时间 */ private String logintime; /** * 登陆IP */ private String loginip;
}
编写dao数据库操作类
package com.example.springboot.mybatis.dao; import com.example.springboot.mybatis.entity.User; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import java.util.List; /** * 基于注解方式编写sql语句,开发中不适用,维护成本太高 */ public interface UserDaoMapper { @Select("select id,username as username,password from t_user where id=#{id}") public User getUserById(Integer id); @Select("select id,username as username,password from t_user where username=#{name}") public List<User> getUserByPage(String name); // 自增长id,使用options配置返回id值 // @Options(useGeneratedKeys=true,keyProperty="id",keyColumn="id") @Insert("insert into t_user(id,username,password) values(#{id},#{username},#{password})") public void saveUser(User user); }
编写service类
package com.example.springboot.mybatis.service; import com.example.springboot.mybatis.dao.UserDaoMapper; import com.example.springboot.mybatis.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * @desc 通过注解方式查询数据库 * @Author wangsh * @date 2018/5/5 23:12 * @return */ @Service public class UserService { @Autowired private UserDaoMapper userDaoMapper; public User getUserById(Integer id) { return userDaoMapper.getUserById(id); } public List<User> getUserByPage(String name) { return userDaoMapper.getUserByPage(name); } public void saveUser(User user) { userDaoMapper.saveUser(user); } }
编写controller类
package com.example.springboot.mybatis.web; import com.example.springboot.mybatis.entity.User; import com.example.springboot.mybatis.service.UserService; import com.example.springboot.mybatis.service.UserService2; import com.example.springboot.mybatis.util.UUIDUtil; import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @desc mybatis 操作数据库查询示例 * @Author wangsh * @date 2018/5/5 23:18 * @return */ @RestController @RequestMapping("/user") public class UserController { /** * 通过注解方式查询数据库 */ @Autowired private UserService userService; @RequestMapping("/getUserById") @ResponseBody public User getUserById(Integer id) { User User = userService.getUserById(id); return User; } @RequestMapping("/getUserByPage") @ResponseBody public List<User> getUserByPage(String name) { // 设置分页 PageHelper.startPage(1, 2); List<User> users = userService.getUserByPage(name); return users; } @RequestMapping("/save") @ResponseBody public User save() { User user = new User(); user.setId(UUIDUtil.getUUID()); user.setUsername("lisi"); user.setPassword("lisi"); userService.saveUser(user); return user; } }
编写启动服务类
启动完成如下:
数据库表:
通过浏览器访问: http://localhost:8080//user/getUserById?id=8376,返回结果表示操作数据库成功