数据库表的结构如下:
DROP DATABASE IF EXISTS test;
CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;
-- 使⽤数据数据
USE test;
-- 创建表[⽤⼾表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`use服务器托管网rname` VARCHAR ( 127 ) NOT NULL,
`gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-⼥ 0-默认',
`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',
`create_time` DATETIME DEFAULT now(),
`update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
在JAVA中的定义:
@Data
public class User {
private Integer id;
private String userName;
private Integer gender;
private Integer delete_flag;
private Date create_time;
private Date update_time;
}
先在配置文件中连接数据库
# .yml 连接数据库
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/(要连接的数据库的名称)?characterEncoding=utf8&useSSL=false
username: root
password: 2002
driver-class-name: com.mysql.cj.jdbc.Driver
定义接口:
@Mapper
public interface UserXMLMapper {
//增
Integer add(User user);
}
XML实现接口:
创建一个xml文件,然后在配置文件中配置xml文件的地址。
#配置xml文件的路径,resources/mapper包中所有以Mapper.xml结尾的文件
mybatis:
mapper-locations: classpath:mapper/**Mapper.xml
#配置 打印mybatis的日志
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
在xml文件中拷贝以下代码,这段代码是MyBatis的固定xml格式:
增
在mapper标签中插入以下代码
insert into userinfo(username) values (#{userName});
id:后面跟的是要实现的接口里面的具体的方法名称
#{}:中直接使用User对象的属性名来获取参数
进行单元测试
@SpringBootTest
class UserXMLMapperTest {
@Autowired
private UserXMLMapper userXMLMapper;
@Test
void add() {
User user = new User();
user.setUserName("zhangsan");
userXMLMapper.add(user);
}
}
删
因为数据库中数据太少了,所以在删除之前先添加一些数据
xml的实现代码如下
delete from userinfo where id = #{id};
进行单元测试
@SpringBootTest
class UserXMLMapperTest {
@Autowired
private UserXMLMapper userXMLMapper;
@Test
void delete() {
userXMLMapper.delete(3);
}
}
查
查询的xml代码如下
select * from userinfo;
因为数据库返回的数据需要和JAVA进行映射所以resultType后面就是要映射的类的全限定名称。
单元测试
@SpringBootTest
class UserXMLMapperTest {
@Autowired
private UserXMLMapper userXMLMapper;
@Test
void find() {
List list = userXMLMapper.find();
System.out.println(list.toString());
}
}
大多数情况下数据库中的参数名和JAVA中的参数名是不相同的,因为数据库一般使用_分隔单词,而JAVA中是使用驼峰命名。
所以在大多数情况下数据库中的参数名和JAVA中的参数名并不是和我上面的例子一样是相同的,它们的对应关系应该是这样:
而代码执行的结果:
后面的三个变量都无法获取返服务器托管网回值。
结果映射
解决办法有三种
1. 起别名
就是利用sql语句将返回结果的列名改的和类中的属性名一致。
select id,username,gender,delete_flag as deleteFlag, create_time as createTime, update_time as updateTime from userinfo;
2. 结果映射
select * from userinfo;
3. 开启驼峰命名
在配置文件中加入以下代码:
#yml文件
mybatis:
configuration:
map-underscore-to-camel-case: true #配置驼峰⾃动转换
改
修改前
修改的xml代码为
update userinfo set username=#{name} where id = #{id};
单元测试
@SpringBootTest
class UserXMLMapperTest {
@Autowired
private UserXMLMapper userXMLMapper;
@Test
void update() {
userXMLMapper.update(1,"wangwu");
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
过滤器和拦截器的辨析 介绍 过滤器和拦截器都是为了在请求到达目标处理器(Servlet或Controller)之前或者之后插入自定义的处理逻辑 过滤器: 遵循AOP(面向切面编程)思想实现,基于Servlet规范提供的Filter接口,它是位于客户端请求与服务…