当前位置: 代码迷 >> 综合 >> 用mybatis 对数据库操作 做 student crud
  详细解决方案

用mybatis 对数据库操作 做 student crud

热度:80   发布时间:2023-12-01 02:31:54.0

Mybatis是什么?

Mybatis是一个SQL映射框架,提供数据库的操作能力,增强JABC,

Mybatis让开发人员集中精神写Sql就可以了,不必关系connection、statement、resultSet的创建,销毁,sql执行

主要类的介绍

1)、Resources :mybatis中的一个类,负责读取主配置文件

        in = Resources.getResourceAsStream(“mybatis.xml”);

2)、SqlSessionFactoryBuilder :创建SqlSessionFactory对象,

3)、SqlSessionFactory :重要级对象,程序创建这个对象耗时较长,使用资源比较多

在整个的项目中有一个就够用了

4)、SqlSession:

SqlSession接口,它定义了操作数据库的方法,例如:selectOne(),selectList(),insert(),updata(),delete(),commit(),rollback(),

实际应用

一、实现步骤

1.新建的student1表

2.加入maven的mybatis坐标,mysql驱动的坐标

    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.3.2</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>compile</scope></dependency>

3.创建实体类,student--保存表中的一行数据的

public class Student {private Integer id;private String name;private String email;private Integer age;@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", email='" + email + '\'' +", age=" + age +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

4.创建持久层的dao接口,定义操作数据库的方法

public interface StudentDao {//查询所有public List<Student> query();//添加public void add(Student student);//修改public void update(Student student);//查询一条public Student queryById(Integer id);//删除public void delete(Integer id);
}

5.创建一个mybatis使用的配置文件

        叫做sql映射文件:写sql语句的。一般一个表一个sql映射文件。

        这个文件是xml文件。

        要求:在接口所在的目录中,文件名称和接口保持―致。

         

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 1.namespace:接口的一个路径 ,2.id :接口下抽象方法名3.接口的返回值和resultType 对应上 ,4接口的参数 对应上-->
<mapper namespace="com.hxci.dao.StudentDao"><select id="query" resultType="com.hxci.pojo.Student">select * from student1</select><insert id="add" >insert  into  student1 (name,email,age) values (#{name},#{email},#{age})</insert><delete id="update">update student1 set name=#{name},email=#{email},age=#{age} where id=#{id}</delete><update id="delete">delete from student1 where id=#{id}</update><select id="queryById" resultType="com.hxci.pojo.Student">select id,name,email,age from student1 where id =#{id}</select></mapper>

6.  封装session工具类

public class BaseDao {static  SqlSessionFactory sqlMapper ;static {String resources = "mybatis-config.xml";Reader reader=null;try {reader= Resources.getResourceAsReader(resources);} catch (IOException e) {e.printStackTrace();}sqlMapper= new SqlSessionFactoryBuilder().build(reader);}public SqlSession getSession(){SqlSession session=sqlMapper.openSession();return session;}public void closeSession(SqlSession session){session.close();}
}

7.  编写业务层接口和实现类,调用dao层

public interface StudentService {public List<Student> query();public void add(Student student);public void update(Student student);public void delete(Integer id);public Student queryById(Integer id);
}//接口的实现类
public class StudentServiceImpl extends BaseDao implements StudentService {SqlSession session ;StudentDao dao ;@Overridepublic List<Student> query() {//获取一个连接session = getSession();//方法内部产生了BlogMapper的实现类。dao = session.getMapper(StudentDao.class);//调用dao层方法,获取list集合List<Student> list = dao.query();//关闭连接closeSession(session);//返回结果集return list;}@Overridepublic void add(Student student) {session = getSession();dao = session.getMapper(StudentDao.class);//执行方法dao.add(student);//自动提交事务,session.commit();//关闭连接closeSession(session);}@Overridepublic void update(Student student) {session = getSession();dao = session.getMapper(StudentDao.class);dao.update(student);session.commit();closeSession(session);}@Overridepublic void delete(Integer id) {session = getSession();dao = session.getMapper(StudentDao.class);dao.delete(id);session.commit();closeSession(session);}@Overridepublic Student queryById(Integer id) {session = getSession();dao = session.getMapper(StudentDao.class);Student ById = dao.queryById(id);session.commit();closeSession(session);return ById;}
}

8.创建mybatis的主配置文件:

        一个项目就一个主配置文件。

        主配置文件提供了数据库的连接信息和sql映射文件的位置信息

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--settings控制mybatis全局行为的--><settings><!--设置mybatis输出日志--><setting name="logImpl" value="STDOUT_LOGGING"/></settings><!--环境配置  就是数据库的连接信息default必须和某个environment的id值一样告诉mybatis使用那个数据库的连接信息,也就是访问哪个数据库--><environments default="mysql"><!--environment:一个数据库信息的配置,叫做:环境id是唯一值,自定义的,表示环境名称的--><environment id="mysql"><!--transactionManager:mybatis的事物类型type:JDBC(表示使用jdbc中connection对象的commit,rollback做事物处理的)--><transactionManager type="JDBC"/><!--dataSource:代表数据源,连接数据库的type:表示数据源的类型 POOLED表示使用连接池的--><dataSource type="POOLED"><property name="driver" value="${db.driver}"/><property name="url" value="${db.url}"/><property name="username" value="${db.username}"/><property name="password" value="${db.password}"/></dataSource></environment><environment id="online"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!--sql mappers(SQL映射文件)的位置--><mappers><!--一个mappers标签指定一个文件的位置,从类路径开始的路径信息target/clasess(类路径)--><mapper resource="mapper/studentMapper.xml"/><!--<mapper resource="com/dyxpowernode/dao/SchoolDao.xml"/>--></mappers>
</configuration><!--mybatis的主配置文件:主要定义了数据库的配置信息,sql映射文件的位置1.约束文件的说明<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">mybatis-3-config.dtd:是约束文件的名称,固定值2.configuration跟标签。-->

9.创建测试类

public class MybayisStudentTest {public static void main(String[] args) {StudentService ss = new StudentServiceImpl();Student student = new Student();student.setName("恁爹");student.setEmail("12315");student.setAge(15);ss.add(student);List<Student> list = ss.query();System.out.println(list);}@Testpublic void updata(){StudentService ss = new StudentServiceImpl();Student student = new Student();student.setId(1);student.setName("羌胡");student.setEmail("548");student.setAge(56);ss.update(student);List<Student> list = ss.query();System.out.println(list);}@Testpublic void delete(){StudentService ss = new StudentServiceImpl();ss.delete(3);List<Student> list = ss.query();}@Testpublic void queryById(){StudentService ss = new StudentServiceImpl();Student student = ss.queryById(2);System.out.println(student);}
}
  相关解决方案