版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34082113/article/details/81876068
首先看下Maven的项目的结构图
一.项目结构
二.步骤
1.准备好数据库,演示的数据库名为student,表名也为stunde,数据库表结构(数据自己填充)
2.导入mysql和mybatis架包
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!-- mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
3.创建POJO实体类对象Student.java
package cn.bd.domain;
public class Student {
private int id;
private String name;
private String city;
private int age;
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", city=" + city + ", age=" + age + "]";
}
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 getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
4.创建StudentDao接口,并定义增删改查的方法
package cn.bd.dao;
import java.util.List;
import cn.bd.domain.Student;
public interface StudentDao {
List<Student> getAllStudent();
Student getStudent(int id);
int addStudent(Student stu);
int delStudent(int id);
int updateStudent(Student stu);
}
5.定义StudentDaoImp类去实现StudentDao方法
此处的session为mybatis操作数据库的对象,想要拿到SqlSession对象,需要通过SqlSessionFactory,创建方式见上一篇文章,在此,session作为main函数的形参传入
package cn.bd.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.sun.org.apache.regexp.internal.recompile;
import cn.bd.domain.Student;
public class StudentDaoImp implements StudentDao{
SqlSession session;
public StudentDaoImp(SqlSession session) {
super();
this.session = session;
}
public List<Student> getAllStudent() {
return session.selectList("studentmapper.getAllStudent");
}
public Student getStudent(int id) {
return session.selectOne("studentmapper.getStudent", id);
}
public int addStudent(Student stu) {
return session.insert("studentmapper.insertStudent",stu);
}
public int delStudent(int id) {
return session.delete("studentmapper.delStudent", id);
}
public int updateStudent(Student stu) {
return session.delete("studentmapper.updateStudent", stu);
}
}
6.编写测试类
此处使用了代码块,代码块会在每个函数之前都执行一次,即可以将函数的公共部分提取到代码块中
package cn.bd.tst;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.bd.dao.StudentDao;
import cn.bd.dao.StudentDaoImp;
import cn.bd.domain.Student;
import junit.framework.TestCase;
public class StudentTest extends TestCase {
StudentDao studentdao;
SqlSession session;
{
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
session = sqlSessionFactory.openSession();
studentdao=new StudentDaoImp(session);
} catch (IOException e) {
e.printStackTrace();
}
}
public void testGetAllStudent(){
List<Student> list=studentdao.getAllStudent();
for (Student student : list) {
System.out.println(student);
}
}
public void testGetStudent() {
Student student = studentdao.getStudent(3);
System.out.println(student);
}
public void testAddStudent() {
Student stu =new Student();
stu.setCity("aad");
stu.setName("23dsa");
stu.setAge(58);
studentdao.addStudent(stu);
session.commit();
}
public void testDelStudent() {
studentdao.delStudent(11);
session.commit();
}
public void testUpdateStudent() {
Student stu =new Student();
stu.setId(12);
stu.setCity("ad");
stu.setName("12");
stu.setAge(58);
studentdao.updateStudent(stu);
session.commit();
}
}
7.项目中还缺少了2个xml文件
mybatis-config.xml(mybatis的配置)
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/student"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper.xml"/>
<mapper resource="studentmapper.xml"/>
</mappers>
</configuration>
studentmapper.xml(定义 sql)
<?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="studentmapper">
<select id="getAllStudent" resultType="cn.bd.domain.Student">
select * from student
</select>
<select id="getStudent" resultType="cn.bd.domain.Student">
select * from student where id=#{id}
</select>
<insert id="insertStudent" parameterType="cn.bd.domain.Student">
insert into student(id,name,city,age) values(null,#{name},#{city},#{age})
</insert>
<delete id="delStudent" parameterType="int">
delete from student where id=#{id}
</delete>
<update id="updateStudent" parameterType="cn.bd.domain.Student">
update student set name=#{name},
city=#{city},
age=#{age}
where id=#{id}
</update>
</mapper>