SpringBoot+Mybatis+MySQL ゝ一纸荒年。 2022-12-10 14:54 101阅读 0赞 0.项目概述 目的是将User类存入MySQL,实现插入与查询操作。 ![在这里插入图片描述][20200927105215904.png_pic_center] 这里省略了service层。 User类不用使用任何注解,字段如下: private int id; private String name; private int age; private long phoneNumber; 数据库: create table user( id int(11) PRIMARY KEY, name varchar(25) not null, age int(4) not null, phoneNumber int(11) ); 1.配置项目依赖: (1) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pXYm9uemU_size_16_color_FFFFFF_t_70_pic_center] (2) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pXYm9uemU_size_16_color_FFFFFF_t_70_pic_center 1] 总的来说,项目依赖比最简单的Web多了mybatis-spring-boot-starter和mysql-connector-java: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </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> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> 2.配置文件 整个项目需要三种配置文件: (1)mybatis-config.xml,设置mybatis的运行参数,参数很多,不设置就会采用默认值。 (2)mapper.xml,一张数据表需要一个mapper文件。 (3)application.properties文件,项目默认提供的文件,里面设置数据库连接相关参数。 2.1.mybatis-config.xml mybatis配置文件[官网地址][Link 1] 在resources目录下创建mybatis-config.xml文件 ![在这里插入图片描述][20200927091520474.png_pic_center] XML 文件使用的头部声明,它用来验证MyBatis XML 文档的正确性: <?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"> 在这里面可以设置类简称 <?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> <!--指定一个包名,MyBatis会在包名下面搜索需要的Java Bean, 每一个在包中的Java Bean,在没有注解的情况下,会使用Bean的首字母小写的非限定类名来作为它的别名--> <typeAliases> <package name="com.linglib.mybatisdemo.pojo"/> </typeAliases> </configuration> 2.2.mapper文件 mapper文件的具体编写参考[官方文档][Link 2]: 在mybatis中,可以不用使用实现类,编写接口代码和建立mapper.xml文件即可操作数据库。 接口代码: @Mapper public interface UserMapper { //增加用户 int addUser(User user); //根据名字查询用户 User findUserByName(String name); //查询所有用户 List<User> findAllUser(); } 与mybatis-config.xml头声明类似,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"> 2.2.1.mapper标签 <?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.linglib.mybatisdemo.mapper.UserMapper"> </mapper> (1)映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句。 值是接口的全限定名称。 (2) 2.2.2.insert标签 插入数据 <mapper namespace="com.linglib.mybatisdemo.mapper.UserMapper"> <!--插入数据--> <insert id="addUser"> insert into user set id=#{id},name=#{name},age=#{age},phoneNumber=#{phoneNumber} </insert> </mapper> (1)id就是接口中的方法名称。 2.2.3.select标签 查询数据,select标签通常与resultMap标签结合使用。 resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。 如果sql查询到的字段与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结果映射到pojo中。 <mapper namespace="com.linglib.mybatisdemo.mapper.UserMapper"> <!--插入数据--> <insert id="addUser"> insert into user set id=#{id},name=#{name},age=#{age},phoneNumber=#{phoneNumber} </insert> <resultMap id="BaseResultMap" type="com.linglib.mybatisdemo.pojo.User"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="age" property="age"/> <result column="phoneNumber" property="phoneNumber"/> </resultMap> <!--根据名字查询单个语句--> <select id="findUserByName" resultMap="BaseResultMap"> select * from user where name=#{name} </select> <!--查询所有数据--> <select id="findAllUser" resultMap="BaseResultMap"> select * from user </select> </mapper> (1)column是数据库字段,property是实体类字段。 2.3.properties #jdbc:mysql://ip:port/数据库名称?参数选项 spring.datasource.url=jdbc:mysql://localhost:3306/testdb?characterEncoding=utf-8&useSSL=true&serverTimezone=GMT spring.datasource.username=root spring.datasource.password=idea2018 spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver mybatis.config-location=classpath:config/mybatis-config.xml mybatis.mapper-locations= classpath:mapper/*.xml #我的8080端口被占用,所以采用8081 server.port=8081 3.配套的其它类 3.1.controller import com.linglib.mybatisdemo.mapper.UserMapper; import com.linglib.mybatisdemo.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @Title UserController * @Description TODO * @Author ZhangLing * @Date 2020/9/27 10:21 * @Version 1.0 **/ @RestController @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/add") public void addUser(int id,String name,int age,long phoneNumber){ User user=new User(id,name,age,phoneNumber); userMapper.addUser(user); } @GetMapping("findUser") public User findUser(String name){ return userMapper.findUserByName(name); } @GetMapping("findAllUser") public List<User> findAllUser(){ return userMapper.findAllUser(); } } 4.测试 (1)插入数据 浏览器访问: http://localhost:8081/user/add?id=1&name=zhang&age=18&phoneNumber=123897 http://localhost:8081/user/add?id=2&name=li&age=19&phoneNumber=89076 ![在这里插入图片描述][20200927105143820.png_pic_center] (2)查询数据 http://localhost:8081/user/findUser?name=zhang 结果: ![在这里插入图片描述][20200927111628401.png_pic_center] (3)查询所有数据 http://localhost:8081/user/findAllUser ![在这里插入图片描述][202009271116589.png_pic_center] [20200927105215904.png_pic_center]: /images/20221123/cf5d1967d458431496b1d17bd72d60c4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pXYm9uemU_size_16_color_FFFFFF_t_70_pic_center]: /images/20221123/c86cbe5b1cc64fc5b7d67f4cbbcbe746.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pXYm9uemU_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20221123/6636da54556846c38828872260069fbd.png [Link 1]: https://mybatis.org/mybatis-3/zh/index.html [20200927091520474.png_pic_center]: /images/20221123/4019627a1a434fbaa07cfc4bb5a07221.png [Link 2]: https://mybatis.org/mybatis-3/zh/sqlmap-xml.html [20200927105143820.png_pic_center]: /images/20221123/cfb5348ca3c84371b1c194ce1c4927da.png [20200927111628401.png_pic_center]: /images/20221123/4887d78083824ef3a819e26d3a3556f9.png [202009271116589.png_pic_center]: /images/20221123/4c983780a4bb43159b79d800f7efc4b0.png
还没有评论,来说两句吧...