标签:就是 ping rop service mys enc ring org 数据库
java 1.8.0_231
因为刚开始学mybatis的时候图省事,看着xml这么多的配置文件就头大,然后就选择了使用注解的方法,但是后来做项目的时候,发现全注解的方式对于动态SQL语句的支持是真的一言难尽,于是这时候就想起了xml的好处,经过一番周折终于配置好了,这篇随笔就记录一下需要注意的地方
首先这个是项目目录,其中有一个result/Result是用于定义响应码code来负责前后端分离用的,这里先不做讨论
application.properties文件
mybatis.mapperLocations是用来指定读取数据xml文件的位置
mybatis.mapperLocations=classpath:mybatis/*.xml spring.datasource.url=jdbc:mysql://localhost:3306/jihisea?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
pom文件的依赖
<dependencies> <!-- springboot web --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> <version>2.2.2.RELEASE</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
User这一个类就是建立数据实体,注意数据格式要和数据库中一一对应,先写出
int id;
String username;
String password;
然后再右键Generate选择生成Getter Setter 和 toString()
创建mapper文件夹 UserMapper接口映射文件
记得在Application上创建MapperScan扫描mapper文件夹
UserService类中使用@Autowired注入UserMapper 然后再方法getusername中返回一个userMapper.getusername();
这样就可以在Controller中使用了
其中@Controller表示这是一个控制类 @Autowired就是将UserService注入到这个类中,@RequestMapping("/test") 就是表示请求映射 也就是localhost:8080/ 这个 " / "后面跟test 就使用该注解下的内容
@ResponseBody 表示响应实体,加了这个之后, 底下方法里返回的值就会直接显示在浏览器界面上,就比如我在下面的getusername里面定义了一个String类型的s作为userService中getusername的值,表达的是
<?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.jihisea.hexb.mapper.UserMapper" > <select id="getusername" resultType="String"> select username from login where id = #{id} </select> </mapper>
这个xml文件中查询id为2的 username值,返回的数据就赋予给了s 因为@ResponseBody的原因打开浏览器,
返回hxb对应数据库中id为2的用户名,成功。
其中有一点需要注意的地方就是我发现如果在controller中
注入的是userMapper时也可以使用userMapper.getusername(2)来调用 ,感觉UserService就是进行了一遍二次包装。
标签:就是 ping rop service mys enc ring org 数据库
原文地址:https://www.cnblogs.com/Hexiaobin/p/12217274.html