1、在该文件夹下创建如下包:
利用mapper.xml实现增删改查
在pom.xml文件中添加以下依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--MySQL连接--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <!--dao层:mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency>
在application.properties文件中添加以下内容:
#mysql连接池 spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.name=com.alibaba.druid.pool.DruidDataSource #扫描mapper文件夹下的文件 mybatis.type-aliases-package=com.xhy.pojo mybatis.mapper-locations=classpath:/mapper/*.xml
数据库表结构如下:
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(5) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(5) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
各包下的文件布置如下图:
user.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.xhy.xczx.dao.UserDao"> <select id="findAll" resultType="com.xhy.xczx.pojo.User"> select * from t_user </select> </mapper>
User中的内容:
@Data//可以自动生成getter/setter方法 @ToString//可以自动生成tostring方法。 public class User implements Serializable{ private Integer id; private String name; private Integer age; }
UserDao中内容如下:
@Mapper//扫描mapper下的文件 @Repository public interface UserDao { List<User> findAll(); }
UserService中内容如下:
public interface UserService { List<User> findAll(); }
UserServiceImpl中内容如下:
@Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public List<User> findAll() { return userDao.findAll(); } }
UserController中内容如下:
@RestController @RequestMapping(value="/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/findAll") public List<User> findAll() { return userService.findAll(); } }
然后访问:
http://localhost:8081/user/findAll
该方式由于不是我们学习的重点,增删改可以自行在xml文件中配置进行测试;
使用SpringBoot-data-jpa实现增删改查
Orm 框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句 Sql 的 Hibernate,一个是可以灵活调试动态 Sql 的 Mybatis ,两者各有特点,在企业级系统开发中可以根据需求灵活使用。发现一个有趣的现象:传统企业大都喜欢使用 Hibernate ,互联网行业通常使用 Mybatis 。
在pom.xml文件夹添加以下依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
UserDao文件下新增如下方法:
@Select("select id,name,age from t_user") List<User> findsAll(); @Insert("insert into t_user(id,name,age) values(#{id},#{name},#{age})") boolean insertUser(User user); @Delete("delete from t_user where id =#{id}") boolean deleteUser(Integer id); @Update("update t_user set name=#{name},age=#{age} where id=#{id}") boolean updateUser(User user); @Select("select id,name,age from t_user limit #{size},#{page}") List<User> findByPage(Integer size, Integer page);
UserService文件下新增如下方法:
List<User> findsAll(); boolean insertUser(User user); boolean deleteUser(Integer id); boolean updateUser(User user); List<User> findByPage(Integer size, Integer page);
UserServiceImpl文件下新增如下方法:
@Override public List<User> findsAll() { List<User> list = userDao.findsAll(); return list; } @Override public boolean insertUser(User user) { boolean b = userDao.insertUser(user); System.out.println(b); return b; } @Override public boolean deleteUser(Integer id) { boolean b = userDao.deleteUser(id); return b; } @Override public boolean updateUser(User user) { boolean b = userDao.updateUser(user); return b; } @Override public List<User> findByPage(Integer size, Integer page) { List<User> page2 = userDao.findByPage(size, page); return page2; }
UserController文件下新增如下方法:
@RequestMapping(value = "/findsAll", method = RequestMethod.GET) public List<User> findsAll() { return userService.findsAll(); } @RequestMapping(value = "/insertUser", method = RequestMethod.POST) public boolean insertUser(User user) { return userService.insertUser(user); } @RequestMapping(value = "/deleteUser", method = RequestMethod.DELETE) public boolean deleteUser(Integer id) { return userService.deleteUser(id); } @RequestMapping(value = "/updateUser", method = RequestMethod.PUT) public boolean updateUser(User user) { return userService.updateUser(user); } @RequestMapping(value = "/findByPage/{size}/{page}", method = RequestMethod.GET) public List<User> findByPage(@PathVariable Integer size, @PathVariable Integer page) { return userService.findByPage(size, page); }
在接口测试工具Postman或者apizza中按照controller中的请求方式进行测试:
查询方式如下:
http://localhost:8081/user/findByPage/1/2
https://github.com/xhy12306/SpringBoot2.0