当前位置 博文首页 > 缘分锝天空的博客:第二弹:Mybatis实现CRUD的操作(Demo练习)

    缘分锝天空的博客:第二弹:Mybatis实现CRUD的操作(Demo练习)

    作者:[db:作者] 时间:2021-07-21 09:47

    今天通过练习,学会了结合Mybatis框架对数据库进行简单CEUD的操作,在此记录一下。

    什么是CRUD??

    ?CRUD是指在做计算处理时的增加(Create)读取查询(Retrieve)更新(Update)删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层的基本操作功能。

    练习操作的表:stu

    ?

    创建maven项目后,如下(用到的文件已经红色方框画出)

    ?重要文件的内容如下:

    pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.lys</groupId>
        <artifactId>mybatis-demo1</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <name>demo</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.6</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <!--这个MySQL版本要跟自己家电脑装的mysql版本一致,否则后面报错-->
                <version>8.0.17</version>
            </dependency>
        </dependencies>
    
        <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties </include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
            </resources>
        </build>
    
    </project>

    src\main\resources下的mybatis.xml文件

    <?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.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/ems?useSSL=FALSE&amp;serverTimezone=Asia/Shanghai"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
        <!--sql映射文件的位置位置信息-->
        <mappers>
            <!--有多个继续往下写-->
            <mapper resource="com/pojo/Dao/stuDao.xml"/>
        </mappers>
    </configuration>

    src\main\java\com\utils\mybatisUtils.java

    package com.utils;
    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;
    
    public class mybatisUtils {
        private static SqlSessionFactory factory;
        static {
            //        定义主配置文件的名称,从类路径的跟开始(target/classes)
            String config = "mybatis.xml";
    //        读取文件
            InputStream in = null;
            try {
                in = Resources.getResourceAsStream(config);
            } catch (IOException e) {
                e.printStackTrace();
            }
    //        创建SqlSessionFactoryBuilder对象
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    //        创建SqlSessionFactory对象
             factory = builder.build(in);
    
        }
        public static SqlSession getSqlSession(){
            return factory.openSession();
        }
    }
    

    src\main\java\com\pojo\Dao\stuDao.java

    package com.pojo.Dao;
    
    import com.pojo.pp1.stu;
    
    import java.util.List;
    
    public interface stuDao {
        //    查询全部学生
        public List<stu> selectstu();
    
        //    用ID查询学生
        public stu findstuByID(int id);
    
        //    添加学生
        public int addstu(stu stu);
    
        //    删除学生信息
        public int deletestuById(int id);
    
        //    修改学生信息
        public int updatestu(stu stu);
    }
    

    src\main\java\com\pojo\Dao\stuDao.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.pojo.Dao.stuDao">
        <select id="selectstu" resultType="com.pojo.pp1.stu">
            select ID,name from stu
        </select>
        <!--通过ID查询学生信息-->
        <select id="findstuByID" parameterType="int" resultType="com.pojo.pp1.stu">
            select ID,name from stu where id=#{id}
        </select>
        <!--添加学生-->
        <insert id="addstu" parameterType="com.pojo.pp1.stu">
            insert into stu(ID,name) values (#{ID},#{name})
        </insert>
        <!--删除学生信息-->
        <delete id="deletestuById" parameterType="int" >
            delete from stu where ID=#{id};
        </delete>
        <!--修改学生信息-->
        <update id="updatestu" parameterType="com.pojo.pp1.stu">
            update stu set name=#{name} where ID=#{ID}
        </update>
    
    </mapper>

    src\test\java\com\pojo\Dao\stuDaoTest.java(测试文件)

    package com.pojo.Dao;
    
    import com.pojo.pp1.stu;
    import com.utils.mybatisUtils;
    import org.apache.ibatis.jdbc.SQL;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import java.util.List;
    
    public class stuDaoTest {
        @Test
    //    查找全部写学生的信息
        public void selectstu() {
            SqlSession sqlSession = mybatisUtils.getSqlSession();
            stuDao stuDao = sqlSession.getMapper(com.pojo.Dao.stuDao.class);
            List<stu> stuList = stuDao.selectstu();
            for (stu stu : stuList) {
                System.out.println(stu);
            }
            sqlSession.close();
        }
        @Test
    //    通过ID查找学生
        public void findstuByID(){
            SqlSession sqlSession = mybatisUtils.getSqlSession();
            stuDao stuDao = sqlSession.getMapper(com.pojo.Dao.stuDao.class);
            stu s = stuDao.findstuByID(2);
            System.out.println(s);
        }
    //    插入学生信息
        @Test
        public void addstu() {
            SqlSession sqlSession = mybatisUtils.getSqlSession();
            stuDao stuDao = sqlSession.getMapper(com.pojo.Dao.stuDao.class);
            int a = stuDao.addstu(new stu(7, "李白"));
            if (a > 0) {
                System.out.println("添加学生成功!");
            }
            sqlSession.commit();
            sqlSession.close();
        }
    //    删除学生信息
        @Test
        public void deletestuById() {
            SqlSession sqlSession = mybatisUtils.getSqlSession();
            stuDao stuDao = sqlSession.getMapper(com.pojo.Dao.stuDao.class);
            int a = stuDao.deletestuById(2);
            if (a > 0) {
                System.out.println("删除学生信息成功!");
            }
            sqlSession.commit();
            sqlSession.close();
    
        }
    
        @Test
        public void updatestu() {
            SqlSession sqlSession = mybatisUtils.getSqlSession();
            stuDao stuDao = sqlSession.getMapper(com.pojo.Dao.stuDao.class);
            int a = stuDao.updatestu(new stu(1, "李新"));
            if (a > 0) {
                System.out.println("信息修改成功!");
            }
            sqlSession.commit();
            sqlSession.close();
        }
    }
    

    努力,加油干!!!!

    cs