使用maven项目配置并使用mybatis (xml开发)

发布时间 2023-09-19 17:34:46作者: qi_8080

使用maven项目配置并使用mybatis (xml开发)

1、首先我们使用maven添加依赖

    <dependencies>
        <!-- Junit测试工具 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>

        <!-- MyBatis核心Jar包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>

        <!-- MySql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

        <!-- Lombok工具 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>

        <!-- Log4j测试工具 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

2、配置数据库信息

创建数据库配置文件db.properties

 

#数据库驱动
driver=com.mysql.jdbc.Driver
#数据地址端口信息 url=jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8
#数据库用户名 username=yourUserName
#密码 password=yourPassword

3、创建mybatis核心配置文件

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <configuration>
 5     <!-- 导入数据库配置信息-->
 6     <properties resource="db.properties"/>
 7     <!-- 配置开发环境信息 -->
 8     <environments default="development">
 9         <environment id="development">
10             <!-- 使用JDBC事务管理器,目前由MyBatis管理 -->
11             <transactionManager type="JDBC"/>
12             <!-- 配置DataSource标准数据源,目前由MyBatis管理 -->
13             <dataSource type="POOLED">
14                 <property name="driver" value="${driver}"/>
15                 <property name="url" value="${url}"/>
16                 <property name="username" value="${username}"/>
17                 <property name="password" value="${password}"/>
18             </dataSource>
19 
20         </environment>
21 
22     </environments>
23     <!--    每一个Mapper.xml都需要在MyBatis核心配置文件中注册-->
24     <mappers>
25         <mapper resource="com/qi/dao/StudentMapper.xml" />
26     </mappers>
27 
28 
29 </configuration>

 

 4、创建实体

以学生为例子

 

 

 1 package com.qi.entity;
 2 
 3 public class Student {
 4     private Integer id;//学生id
 5     private String sName;//学生姓名
 6     private Integer age;//学生年龄
 7     private String addres;//学生地址
 8 
 9 
10     public Student() {
11     }
12 
13     public Student(Integer id, String sName, Integer age, String addres ) {
14         this.id = id;
15         this.sName = sName;
16         this.age = age;
17         this.addres = addres;
18     }
19 
20     /**
21      * 获取
22      * @return id
23      */
24     public Integer getId() {
25         return id;
26     }
27 
28     /**
29      * 设置
30      * @param id
31      */
32     public void setId(Integer id) {
33         this.id = id;
34     }
35 
36     /**
37      * 获取
38      * @return sName
39      */
40     public String getSName() {
41         return sName;
42     }
43 
44     /**
45      * 设置
46      * @param sName
47      */
48     public void setSName(String sName) {
49         this.sName = sName;
50     }
51 
52     /**
53      * 获取
54      * @return age
55      */
56     public Integer getAge() {
57         return age;
58     }
59 
60     /**
61      * 设置
62      * @param age
63      */
64     public void setAge(Integer age) {
65         this.age = age;
66     }
67 
68     /**
69      * 获取
70      * @return addres
71      */
72     public String getAddres() {
73         return addres;
74     }
75 
76     /**
77      * 设置
78      * @param addres
79      */
80     public void setAddres(String addres) {
81         this.addres = addres;
82     }
83 
84     public String toString() {
85         return "Student{id = " + id + ", sName = " + sName + ", age = " + age + ", addres = " + addres + "}";
86     }
87 }

5、创建Dao层的接口

 

 1 package com.qi.dao;
 2 
 3 import com.qi.entity.Student;
 4 
 5 import java.util.List;
 6 
 7 public interface StudentDao {
 8     /**
 9      * 根据学生id查询学生信息
10      * @param id
11      * @return
12      */
13     Student selectById(Integer id);
14 
15     /**
16      * 插入学生信息
17      * @param student
18      * @return
19      */
20     int insertStudent(Student student);
21 
22     /**
23      * 根据id删除学生信息
24      * @param id
25      * @return
26      */
27     int deleteById(Integer id);
28 
29     /**
30      * 修改学生信息
31      * @param student
32      * @return
33      */
34     int infoUpdate(Student student);
35 }

 6、写sql

在resources文件夹下创建Mapper 映射

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3 <mapper namespace="com.qi.dao.StudentDao">
 4     <insert id="insertStudent" parameterType="com.qi.entity.Student">
 5         INSERT INTO student(sName,age,addres) VALUES (#{sName},#{age},#{addres});
 6     </insert>
 7 
 8     <delete id="deleteById" parameterType="Integer">
 9         DELETE FROM student WHERE id=#{id};
10     </delete>
11 
12     <update id="infoUpdate" parameterType="com.qi.entity.Student">
13         UPDATE student SET sName=#{sName},age=#{age},addres=#{addres} WHERE id = #{id};
14     </update>
15 
16     <select id="selectById" resultType="com.qi.entity.Student" parameterType="Integer">
17         SELECT * FROM student WHERE id = #{id}
18     </select>
19 </mapper>

 

7、编写mybatisUtils类

 

 1 package com.qi.untils;
 2 
 3 import org.apache.ibatis.io.Resources;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7 
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 
11 public class MybatisUntils {
12     private static SqlSessionFactory sqlSessionFactory;
13     static {
14         try {
15             //获取 SqlSessionFactory对象
16             String resource = "mybatis-config.xml";
17             InputStream inputStream = Resources.getResourceAsStream(resource);
18             sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
19         } catch (IOException e) {
20             e.printStackTrace();
21         }
22     }
23     //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
24     // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
25     public static SqlSession getSqlSession(){
26         return sqlSessionFactory.openSession();
27     }
28 
29 }

8测试

package com.qi;

import com.qi.dao.StudentDao;
import com.qi.entity.Student;
import com.qi.untils.MybatisUntils;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        // 创建 SqlSession
        SqlSession sqlSession = MybatisUntils.getSqlSession();

        // 获取 Mapper 接口的代理对象
        StudentDao studentDao = sqlSession.getMapper(StudentDao.class);

        // 执行查询
        Student student = studentDao.selectById(1);
        System.out.println(student);

        // 执行插入
        int num = studentDao.insertStudent(student);
        sqlSession.commit();
        System.out.println(num);
        //执行删除
        num = studentDao.deleteById(86);
        sqlSession.commit();
        System.out.println(num);

        student.setAddres("上述福");
        //执行修改
        num = studentDao.infoUpdate(student);
        sqlSession.commit();
        System.out.println(num);



    }
}