Mapper接口开发MyBatis

MyBatis

一个基于java的持久层框架。它提供的持久层框架包括DAO(Data Access Objects)和SQL Maps。

MyBatis优点

*1)JDBC :SQL语句包含在Java代码块中,耦合度高,代码重复量比较高,不易于维护;
*2)Hibernate和JPA :对于比较复杂的SQL语句,处理比较困难。适合中小型数据库;
*3)MyBatis :sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据;

MyBatis引用

创建一个Maven项目,修改pom.xml文件。

<!--自定义属性-->
    <properties>
        <mybatis.version>3.5.6</mybatis.version>
    </properties>
    <!--加载依赖库-->
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${
    
    mybatis.version}</version>
        </dependency>

练习

目标:连接mysql数据库,实现保存,查询等功能。
1)数据库创建一个表格。
2)在idea创建一个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>org.example</groupId>
    <artifactId>Mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--自定义属性-->
    <properties>
        <mybatis.version>3.5.6</mybatis.version>
    </properties>
    <!--加载依赖库-->
    <dependencies>
        <!--加载mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
         <!--加载驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
          <!--lombok  @Data-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
            <scope>provided</scope>
        </dependency>
          <!--测试工具包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.properties</exclude>
                    <exclude>**/*.xml</exclude>
                </excludes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
            </testResource>
            <testResource>
                <directory>${project.basedir}/src/main/resources</directory>
            </testResource>
        </testResources>
    </build>

</project>

3)创建实体类(JavaBean)

package com.demon.po;

import lombok.Data;

@Data
public class Dept {
    
    
    private Integer deptno;
    private String dname;
    private String loc;
}

4)创建一个接口

package com.demon.po;

import java.util.List;

public interface xdept {
    
    
    public int save(Dept dep);
   /* public String dname;
    public String loc;
    public List<Dept> finall;
    public Dept finfbyid(Integer pid);*/
}

5)创建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>
    <!-- Aliases配置,可以省去一部分代码,能够提高性能 -->
    <typeAliases>
        <package name="com.demon.po"/>
    </typeAliases>
     <!-- 数据库连接环境的配置 -->
    <environments default="de">
        <environment id="de">
            <transactionManager type="JDBC" />

            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://192.168.1.138:3306/mydb?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF8&amp;serverTimezone=GMT" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!-- 引入SQL映射文件,Mapper映射文件 	-->
    <mappers>
    <!-- 映射文件的路径 ,注意别写错了,是相对路径-->
        <mapper resource="com/demon/mapper/xdept.mapper.xml" />
    </mappers>
</configuration>

6)创建MyBatis的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">
         <!--在Mppper映射文件中的<mapper>标签中的namespace中必须指定Mapper接口的全类名 -->
  <mapper namespace="com.demon.po.xdept">
  <!--Mapper映射文件中的增删改查标签的id必须指定成Mapper接口中的方法名. parameterType是实例名dept-->     
    <insert id="save" parameterType="dept">
        insert into dept values(#{deptno},#{dname},#{loc})
    </insert>
    <delete id="delet" parameterType="int">
          delete from dept where deptno=#{as}
    </delete>
    <update id="update" parameterType="com.demon.po.Dept">
        update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}
    </update>
    <select id="findall" resultType="com.demon.po.Dept">
        select * from  dept
    </select>
    <select id="findbyid" resultType="com.demon.po.Dept">
        select * from dept where deptno=#{deptno}
    </select>
</mapper>

7)测试

package demon;

import com.demon.po.Dept;
import com.demon.po.xdept;
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 org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class depo {
    
    
    SqlSession session;
    @Before
    public  void before() throws IOException {
    
    
    //易错点,文件是MyBatis的全局配置文件路径
        InputStream rd = Resources.getResourceAsStream ("xconfig.xml");
        SqlSessionFactory sf=new SqlSessionFactoryBuilder ().build (rd) ;
        session=sf.openSession ();

    }
    @Test
    public  void  save(){
    
    
        xdept xdep=session.getMapper (xdept.class);
        Dept dep=new Dept ();
        //注意deptno是主键,不能重复
        dep.setDeptno (52);
        dep.setDname ("武");
        dep.setLoc ("唐");
        int x=xdep.save (dep);
        session.commit ();
    }
}

注意事项:
①Mapper接口与Mapper映射文件的绑定在Mppper映射文件中的标签中的namespace中必须指定Mapper接口的全类名。
②Mapper映射文件中的增删改查标签的id必须指定成Mapper接口中的方法名.。

猜你喜欢

转载自blog.csdn.net/weixin_44787979/article/details/114002270