最近突然想写一个简单测试,发现现在网上大部分都是基于注解,而我个人比较喜欢基于xml的方式,所以在此放一个供各位爱学习的网友们观看。
一、 新建一个project
弄完这些以后就可以新建一张表,在这里我给大家说一个在IDEA就可以连接数据库并新建表,以及插入数据:
在点击完之后会出来一个列表,选到Data Source ->Mysql就可以了,因为我用的是MySQL,如果你们相用别的,也可以选择添加别的。
这是添加完成之后的界面,以及建表,和在Navicat里面写的一样,执行的话,就点击绿色的执行。
接下建完表之后数据的话,可以插几条,因为我先写的是查询,如果没数据查询之后是没有很明显的区别。
二、目录结构
给大家看下我的包结构,大家可以先建包建表,然后再去写里面的代码,个人习惯。
三、步骤
① 实体类(Model)
package com.gaoge.model;
public class Person {
private int id;
private String name;
private String teacher;
public Person() {
}
public Person(int id, String name, String teacher) {
this.id = id;
this.name = name;
this.teacher = teacher;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", teacher='" + teacher + '\'' +
'}';
}
}
② 建完Model之后就可以建Mapper
接口(Mapper)
package com.gaoge.mapper;
import com.gaoge.model.Person;
import org.apache.ibatis.annotations.Mapper;
import java.util.ArrayList;
@Mapper
public interface PersonMapper {
void insert(Person person);
void delete(int id);
void update(Person person);
ArrayList<Person> findAll();
Person findId(int id);
}
因为我是做增删改查和单个查询,所以写了五个方法,你们可以根据自己的需要来写。
因为我只是测试Junit,所以就没有新建Controller、Service、Impl。
③ 启动类(Application)
@Mapper注解用来扫描mapper
package com.gaoge;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.gaoge.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
④ 接下来是Mapper.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">
<mapper namespace="com.gaoge.mapper.PersonMapper">
<!--查询全部-->
<select id="findAll" resultType="person">
select * from person
</select>
<!--查询单个-->
<select id="findId" resultType="person">
select * from person where id=#{id}
</select>
<!--新增-->
<insert id="insert">
insert into person values(#{id},#{name},#{teacher})
</insert>
<!--删除-->
<delete id="delete">
delete from person where id=#{id}
</delete>
<!--修改-->
<update id="update">
update person set name=#{name},teacher=#{teacher} where id=#{id}
</update>
</mapper>
⑤ 然后是配置文件
在这里有必要说下:
?serverTimezone=GMT%2B8是我再写的过程中报了一个错误,翻译之后说是我时区不对,才加上的这个
application.properties
# mysql
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8
useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mybatis
# 对应实体类的包名
mybatis.typeAliasesPackage=com.gaoge.model
# mapper.xml文件所在位置,我放到了resources下面
mybatis.mapperLocations=classpath:/mapper/**Mapper.xml
⑥test包下测试启动类
我定义了五个方法,所以我就把它们都测试了一遍
package com.gaoge;
import com.gaoge.mapper.PersonMapper;
import com.gaoge.model.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
private PersonMapper personMapper;
@Test
public void select() {
ArrayList<Person> all = personMapper.findAll();
for (Person p : all
) {
System.out.println(p);
}
}
@Test
public void insert(){
Person p = new Person();
p.setId(1);
p.setName("李老师");
p.setTeacher("语文");
personMapper.insert(p);
}
@Test
public void delete(){
personMapper.delete(1);
}
@Test
public void update(){
Person p = new Person();
p.setTeacher("英语");
p.setName("王五");
p.setId(1);
personMapper.update(p);
}
}
最后附上一张查询的结果图
后续会继续发出加上Controller、Service、Impl与前端页面的交互的增删改查以及JSP页面。