mybatis的Helloworld

mybatis笔记

1.mybatis的第一个helloworld

1建数据表

使用mysql数据库

DROP TABLE IF EXISTS `tbl_employee`;
CREATE TABLE `tbl_employee` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `last_name` varchar(255) DEFAULT NULL,
 `gender` char(1) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tbl_employee
-- ----------------------------
INSERT INTO `tbl_employee` VALUES ('1', 'sujinran', '女', '[email protected]');


2导maven依赖包

在pom.xml中导入mybatis需要的依赖包

  <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.41</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

mybatis的映射文件找不到解决方法如下:

 <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>

3javaBean类

com.demo.bean.Employee 实体类

package com.demo.bean;
    public class Employee {
        private Integer id; //编号
        private String lastName; //姓名
        private String email; //邮箱
        private String gender; //性别
        public Employee(Integer id, String lastName, String email, String gender) {
            this. id = id;
            this. lastName = lastName;
            this. email = email;
            this. gender = gender;
        }
        public Employee() {
        }
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this. id = id;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this. lastName = lastName;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this. email = email;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this. gender = gender;
        }
        @Override
        public String toString() {
            return "Employee [id=" + id + ", lastName=" + lastName + ", email="
                    + email + ", gender=" + gender + "]";
        }
    }

4mybatis 配置文件

mybatis-config.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>
    <!--
    1、 mybatis可以使用properties来引入外部properties配置文件的内容;
    resource:引入类路径下的资源
    url:引入网络路径或者磁盘路径下的资源
    -->
    <properties resource="dbconfig.properties"></properties>
    <!--
    2、 settings包含很多重要的设置项
    setting:用来设置每一个设置项
    name:设置项名
    value:设置项取值
    -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!-- 3、 typeAliases:别名处理器:可以为我们的java类型起别名
    别名不区分大小写
    -->
    <typeAliases>
        <!-- 1、 typeAlias:为某个java类型起别名
        type:指定要起别名的类型全类名;默认别名就是类名小写; employee
        alias:指定新的别名
        -->
        <!-- <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/> -->
        <!-- 2、 package:为某个包下的所有类批量起别名
        name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名
       (类名小写),)
        -->
        <package name="com.demo.bean"/>
        <!-- 3、批量起别名的情况下,使用@Alias注解为某个类型指定新的别名 -->
    </typeAliases>
    <!--
    4、 environments:环境们, mybatis可以配置多种环境 ,default指定使用某种环境。可以
   达到快速切换环境。
    environment:配置一个具体的环境信息;必须有两个标签; id代表当前环境的唯一标识
    transactionManager:事务管理器;
    type:事务管理器的类
   型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
    自定义事务管理器:实现TransactionFactory接口.type指定为全类名
    dataSource:数据源;
    type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)
    |POOLED(PooledDataSourceFactory)
    |JNDI(JndiDataSourceFactory)
    自定义数据源:实现DataSourceFactory接口, type是全类名
    -->
    <environments default="dev_mysql">
        <environment id="dev_mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 5、 databaseIdProvider:支持多数据库厂商的;
    type="DB_VENDOR": VendorDatabaseIdProvider
    作用就是得到数据库厂商的标识(驱动getDatabaseProductName()), mybatis就能根据
   数据库厂商标识来执行不同的sql;
    MySQL, Oracle, SQL Server,xxxx
    -->
    <databaseIdProvider type="DB_VENDOR">
        <!-- 为不同的数据库厂商起别名 -->
        <property name="MySQL" value="mysql"/>
    </databaseIdProvider>
    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatisconfig.xml)中 -->
    <!-- 6、 mappers:将sql映射注册到全局配置中 -->
    <mappers>
        <!--
        mapper:注册一个sql映射
        注册配置文件
        resource:引用类路径下的sql映射文件
        mybatis/mapper/EmployeeMapper.xml
        url:引用网路路径或者磁盘路径下的sql映射文件
        file:///var/mappers/AuthorMapper.xml
        注册接口
        class:引用(注册)接口,
        1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录
       下;
        2、没有sql映射文件,所有的sql都是利用注解写在接口上;
        推荐:
        比较重要的,复杂的Dao接口我们来写sql映射文件
        不重要,简单的Dao接口为了开发快速可以使用注解;
        -->
        <!--注册xml-->
        <!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> -->
        <!--注册接口:必须接口和映射文件同名同包-->
        <!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->
        <!-- 批量注册:必须接口和映射文件同名同包 -->
        <package name="com.demo.dao"/>
    </mappers>
</configuration>

5数据库配置文件

dbconfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

6mapper接口及映射文件

com.demo.dao.EmployeeMapper

package com.demo.dao;

import com.demo.bean.Employee;

public interface EmployeeMapper {
    public Employee getEmpById(Integer id); //查询

    public Long addEmp(Employee employee); //增加

    public boolean updateEmp(Employee employee); //更新

    public void deleteEmpById(Integer id); //删除
}

com/demo/dao/EmployeeMapper.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.demo.dao.EmployeeMapper">
    <!--
    public Employee getEmpById(Integer id);
    namespace:名称空间;指定为接口的全类名
    id:唯一标识
    resultType:返回值类型
    #{id}:从传递过来的参数中取出id值
    last_name lastName :起别名
    -->
    <select id="getEmpById" resultType="com.demo.bean.Employee">
        select id,last_name,email,gender from tbl_employee where id = #{id}
    </select>
    <!--
   public void addEmp(Employee employee);
    parameterType:参数类型,可以省略,
   获取自增主键的值:
    mysql支持自增主键,自增主键值的获取, mybatis也是利用statement.getGenreatedKeys();
    useGeneratedKeys="true";使用自增主键获取主键值策略
    keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给
   javaBean的哪个属性
   -->
    <insert id="addEmp" parameterType="com.demo.bean.Employee"
            useGeneratedKeys="true" keyProperty="id" databaseId="mysql">
        insert into tbl_employee(last_name,email,gender)
        values(#{lastName},#{email},#{gender})
    </insert>
    <!-- public void updateEmp(Employee employee); -->
    <update id="updateEmp">
        update tbl_employee
        set last_name=#{lastName},email=#{email},gender=#{gender}
        where id=#{id}
    </update>
    <!-- public void deleteEmpById(Integer id); -->
    <delete id="deleteEmpById">
        delete from tbl_employee where id=#{id}
    </delete>
</mapper>

7测试

MyBatisTest

import com.demo.bean.Employee;
import com.demo.dao.EmployeeMapper;
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.Test;

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

public class MyBatisTest {
    public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }

    /**
     * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行
     * 环境信息
     * 2、 sql映射文件;配置了每一个sql,以及sql的封装规则等。
     * 3、将sql映射文件注册在全局配置文件中
     * 4、写代码:
     * 1)、根据全局配置文件得到SqlSessionFactory;
     * 2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
     * 一个sqlSession就是代表和数据库的一次会话,用完关闭
     * 3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。 sql都是保存在sql映射文件中的。
     *
     * @throws IOException
     */
    //************************************************************************************
//                                  查询测试
    //************************************************************************************
    @Test
    public void test01() throws IOException {
        // 1、获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        // 2、获取sqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            // 3、获取接口的实现类对象
            //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
            Employee employee = mapper.getEmpById(1);
            System.out.println(mapper.getClass());
            System.out.println(employee);
        } finally {
            openSession.close();
        }
    }

    /**
     * 测试增删改
     * 1、 mybatis允许增删改直接定义以下类型返回值
     * Integer、 Long、 Boolean、 void
     * 2、我们需要手动提交数据
     * sqlSessionFactory.openSession();===》手动提交
     * sqlSessionFactory.openSession(true);===》自动提交
     *
     * @throws IOException
     */

    //************************************************************************************
//                                  添加测试
    //************************************************************************************
    @Test
    public void test02() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //1、获取到的SqlSession不会自动提交数据
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
            /**
             * 测试添加
             */
            Employee employee = new Employee(null, "jerry4", null, "1");
            mapper.addEmp(employee);
            System.out.println(employee.getId());
            //2、手动提交数据
            openSession.commit();
        } finally {
            openSession.close();
        }
    }
    //************************************************************************************
//                                  修改测试
    //************************************************************************************
    @Test
    public void test03() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //1、获取到的SqlSession不会自动提交数据
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
            /**
             * 测试修改
             */
            Employee employee = new Employee(1, "Tom", "[email protected]", "0");
            boolean updateEmp = mapper.updateEmp(employee);
            System.out.println(updateEmp);

            //2、手动提交数据
            openSession.commit();
        } finally {
            openSession.close();
        }
    }
    //************************************************************************************
//                                  删除测试
    //************************************************************************************
    @Test
    public void test04() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //1、获取到的SqlSession不会自动提交数据
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
            /**
             * 测试删除
             */
            mapper.deleteEmpById(2);

            //2、手动提交数据
            openSession.commit();
        } finally {
            openSession.close();
        }
    }




}




哈哈~~~~~~~~第一个mybatis的helloworld练习结束了

2.mybatis的映射文件

mybatis操作数据库都编写在映射文件中,再对外提供映射文件的接口给服务层调用,因此映射文件非常重要

1.映射文件参数处理

1.建数据库表

使用mysql数据库

DROP TABLE IF EXISTS `tbl_employee`;
CREATE TABLE `tbl_employee` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `last_name` varchar(255) DEFAULT NULL,
 `gender` char(1) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tbl_employee
-- ----------------------------
INSERT INTO `tbl_employee` VALUES ('1', 'sujinran', '女', '[email protected]');



2.导包(maven)

在pom.xml中导入mybatis需要的依赖包

  <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.41</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

mybatis的映射文件找不到解决方法如下:

 <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>


3.javabean类

com.demo.bean.Employee 实体类

package com.demo.bean;
    public class Employee {
        private Integer id; //编号
        private String lastName; //姓名
        private String email; //邮箱
        private String gender; //性别
        public Employee(Integer id, String lastName, String email, String gender) {
            this. id = id;
            this. lastName = lastName;
            this. email = email;
            this. gender = gender;
        }
        public Employee() {
        }
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this. id = id;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this. lastName = lastName;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this. email = email;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this. gender = gender;
        }
        @Override
        public String toString() {
            return "Employee [id=" + id + ", lastName=" + lastName + ", email="
                    + email + ", gender=" + gender + "]";
        }
    }

4.mybatis 配置文件

mybatis-config.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>
    <!--
    1、 mybatis可以使用properties来引入外部properties配置文件的内容;
    resource:引入类路径下的资源
    url:引入网络路径或者磁盘路径下的资源
    -->
    <properties resource="dbconfig.properties"></properties>
    <!--
    2、 settings包含很多重要的设置项
    setting:用来设置每一个设置项
    name:设置项名
    value:设置项取值
    -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!-- 3、 typeAliases:别名处理器:可以为我们的java类型起别名
    别名不区分大小写
    -->
    <typeAliases>
        <!-- 1、 typeAlias:为某个java类型起别名
        type:指定要起别名的类型全类名;默认别名就是类名小写; employee
        alias:指定新的别名
        -->
        <!-- <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/> -->
        <!-- 2、 package:为某个包下的所有类批量起别名
        name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名
       (类名小写),)
        -->
        <package name="com.demo.bean"/>
        <!-- 3、批量起别名的情况下,使用@Alias注解为某个类型指定新的别名 -->
    </typeAliases>
    <!--
    4、 environments:环境们, mybatis可以配置多种环境 ,default指定使用某种环境。可以
   达到快速切换环境。
    environment:配置一个具体的环境信息;必须有两个标签; id代表当前环境的唯一标识
    transactionManager:事务管理器;
    type:事务管理器的类
   型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
    自定义事务管理器:实现TransactionFactory接口.type指定为全类名
    dataSource:数据源;
    type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)
    |POOLED(PooledDataSourceFactory)
    |JNDI(JndiDataSourceFactory)
    自定义数据源:实现DataSourceFactory接口, type是全类名
    -->
    <environments default="dev_mysql">
        <environment id="dev_mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 5、 databaseIdProvider:支持多数据库厂商的;
    type="DB_VENDOR": VendorDatabaseIdProvider
    作用就是得到数据库厂商的标识(驱动getDatabaseProductName()), mybatis就能根据
   数据库厂商标识来执行不同的sql;
    MySQL, Oracle, SQL Server,xxxx
    -->
    <databaseIdProvider type="DB_VENDOR">
        <!-- 为不同的数据库厂商起别名 -->
        <property name="MySQL" value="mysql"/>
    </databaseIdProvider>
    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatisconfig.xml)中 -->
    <!-- 6、 mappers:将sql映射注册到全局配置中 -->
    <mappers>
        <!--
        mapper:注册一个sql映射
        注册配置文件
        resource:引用类路径下的sql映射文件
        mybatis/mapper/EmployeeMapper.xml
        url:引用网路路径或者磁盘路径下的sql映射文件
        file:///var/mappers/AuthorMapper.xml
        注册接口
        class:引用(注册)接口,
        1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录
       下;
        2、没有sql映射文件,所有的sql都是利用注解写在接口上;
        推荐:
        比较重要的,复杂的Dao接口我们来写sql映射文件
        不重要,简单的Dao接口为了开发快速可以使用注解;
        -->
        <!--注册xml-->
        <!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> -->
        <!--注册接口:必须接口和映射文件同名同包-->
        <!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->
        <!-- 批量注册:必须接口和映射文件同名同包 -->
        <package name="com.demo.dao"/>
    </mappers>
</configuration>

5.数据库配置文件

dbconfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

6.mapper接口及映射文件

com.demo.dao.EmployeeMapper

package com.demo.dao;

import com.demo.bean.Employee;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

public interface EmployeeMapper {
    // 查询
    //单个参数处理
    public Employee getEmpById(Integer id);

    //多个参数处理
    public Employee getEmpByIdAndLastName(@Param("id") Integer id, @Param("lastName") String lastName);

    //如果多个参数不是业务模型中的数据,没有对应的pojo,不经常使用,为了方便,我们也可以传入map
    public Employee getEmpByMap(Map<String, Object> map);

}

com/demo/dao/EmployeeMapper.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.demo.dao.EmployeeMapper">
    <!--
    单个参数处理
    -->
    <select id="getEmpById" resultType="com.demo.bean.Employee">
        select id,last_name,email,gender from tbl_employee where id = #{id}
    </select>
    <!--多个参数处理-->
    <!-- public Employee getEmpByIdAndLastName(Integer id,String lastName);-->
    <select id="getEmpByIdAndLastName" resultType="com.demo.bean.Employee">
        select * from tbl_employee where id = #{id} and last_name=#{lastName}
    </select>
    <!--多个参数不是业务模型中的数据,没有对应的pojo-->
    <!-- public Employee getEmpByMap(Map<String, Object> map); -->
    <select id="getEmpByMap" resultType="com.demo.bean.Employee">
        select * from tbl_employee where id=#{id} and last_name=#{lastName}
    </select>
</mapper>

7.测试

import com.demo.bean.Employee;
import com.demo.dao.EmployeeMapper;
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.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class MyBatisTest {
    public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources. getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }
    //*********************************************************************************
//                                单个参数处理
    //*********************************************************************************
    @Test
    public void test01() throws IOException {
        // 1、获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        // 2、获取sqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            // 3、获取接口的实现类对象
            //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper. class);
            Employee employee = mapper.getEmpById(1);
            System. out.println(employee);
        } finally {
            openSession.close();
        }
    }
    //*********************************************************************************
                                //    多个参数处理
    //*********************************************************************************
    @Test
    public void test02() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //1、获取到的SqlSession不会自动提交数据
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper. class);
            Employee employee = mapper.getEmpByIdAndLastName(1, "tom");
            System. out.println(employee);
        } finally {
            openSession.close();
        }
    }
    //*********************************************************************************
//                      多个参数不是业务模型中的数据,没有对应的pojo
    //*********************************************************************************
    @Test
    public void test03() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //1、获取到的SqlSession不会自动提交数据
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper. class);
            Map<String, Object> map = new HashMap<>();
            map.put("id", 1);
            map.put("lastName", "Tom");
            map.put("tableName", "tbl_employee");
            Employee employee = mapper.getEmpByMap(map);
            System. out.println(employee);
        } finally {
            openSession.close();
        }
    }
}



 
 






猜你喜欢

转载自blog.csdn.net/qq_35136982/article/details/80568736