mybatis-03(使用mapper接口处理)

1、创建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>
    <properties resource="db.properties"/>
    <typeAliases>
        <!-- 两种方法随便用,建议用第二种 -->
        <!--<typeAlias type="com.huawei.bean.Student" alias="Student"/>-->
        <package name="com.huawei.bean"/>
        </typeAliases>
    <environments default="development">
        <environment id="development">
            <!-- 配置事务 -->
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/huawei/bean/Student.xml"/>
    </mappers>
</configuration>

2、根据数据表创建相应的实体类

package com.huawei.bean;

public class Student {
    private Integer id;
    private String name;
    private Integer grade;
    private String className;
    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 Integer getGrade() {
        return grade;
    }
    public void setGrade(Integer grade) {
        this.grade = grade;
    }
    public String getClassName() {
        return className;
    }
    public void setClassName(String className) {
        this.className = className;
    }

}

3、创建mapper文件完成对实体类的映射,该文件同样是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.huawei.mapper.StudentMapper">
    <insert id="add" parameterType="Student">
        insert into student(id,name,grade,classname) values(seq_student_id.nextval,#{name},#{grade},#{className})
    </insert>

<resultMap type="Student" id="student">
    <result column="grade_id" property="grade"/>
</resultMap>
<select id="getStudents" resultMap="student">
        select *
        from student
    </select>
</mapper>

4、创建SQLSession,并且通过SqlSession完成对数据库的操作

package com.huawei.jutilTest;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.huawei.bean.Student;
import com.huawei.mapper.StudentMapper;
import com.huawei.util.MybatisUtil;

public class JutilTest {
    @Test
    public void doAdd() {
        SqlSession session = null;
            try {
                session = MybatisUtil.createSession();
                Student bean = new Student();
                bean.setName("小明");
                bean.setGrade(2);
                bean.setClassName("三年级");
                //注意区别
                session.getMapper(StudentMapper.class).add(bean);
                System.out.println("执行成功");
                session.commit();
            } catch (Exception e) {
                e.printStackTrace();
                session.rollback();
            }finally{
                MybatisUtil.sessionClose(session);
            }
    }

    @Test
    public void getStudents(){
        SqlSession session = null;
        List<Student>list =null;
            session = MybatisUtil.createSession();
            //注意
            list=session.getMapper(StudentMapper.class).getStudents();
            for(int i=0;i<list.size();i++){
                System.out.println(list.get(i).getName()+","+list.get(i).getGrade());
            }
            MybatisUtil.sessionClose(session);
    }
}

5、最佳实现
 1)创建相应的MynbatisUtil完成对Session的获取

package com.huawei.util;

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

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {
    //初始化
    private static  SqlSessionFactory factory;
    static{
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //创建SQLSession
    public static SqlSession createSession(){
        return factory.openSession();
    }
    //关闭SQLSession
    public static void sessionClose(SqlSession session){
        if(session!=null) session.close();
    }
}

2)注意参数名
 3)使用mapper接口处理

package com.huawei.mapper;

import java.util.List;

import com.huawei.bean.Student;

public interface StudentMapper {
    public void add(Student bean);
    public List<Student> getStudents();
}

项目结构

时间: 2024-11-08 19:14:43

mybatis-03(使用mapper接口处理)的相关文章

mybatis如何根据mapper接口生成其实现类

mybatis系列 SpringBoot集成mybatis mybatis的statement的解析与加载 mybatis如何根据mapper接口生成其实现类 mybatis的mapper返回map结果集 mybatis结果的组装 序 mybatis里头给sqlSession指定执行哪条sql的时候,有两种方式,一种是写mapper的xml的namespace+statementId,如下: public Student findStudentById(Integer studId) { log

Mybatis为什么只有mapper接口没有实现类

做JAVA开发的小伙伴都知道,接口几乎都由实现类实现其功能,使用接口作变量引用实现类作变量实例.然而有部分接口我们在源代码中却找不到其实现类,mybatis的mapper接口便是如此.那么,他们是怎么实现其功能的呢,那就是动态代理. 什么是动态代理这里就不做解释了,不了解的朋友可以参考一下设计模式. mybatis的动态代理过程: 初始化SqlSessionFactory解析mapper.xml的namespace属性的时候,将MapperProxyFactory代理工厂存入mapper缓存中,

mybatis中的mapper接口文件以及example类的实例函数以及详解

##Example example = new ##Example(); example.setOrderByClause("字段名 ASC"); //升序排列,desc为降序排列. example.setDistinct(false)//去除重复,boolean型,true为选择不重复的记录. Criteria criteria = new Example().createCriteria(); is null;is not null; equal to(value);not equ

基于注解的Mybatis mapper 接口注意事项

基于注解的Mybatis mapper 接口功能没有mapper xml配置文件丰富,而且动态sql语句的灵活性不能和xml配置相比. 这里只说一下基于注解的动态sql注意事项: Mybatis提供注解 @InsertProvider, @UpdateProvider,@DeleteProvider和 @SelectProvider来提供动态sql功能. 提供动态sql的方法参数只有2种可能:无参数和一个参数.一个参数又分为2种情况:参数类型和mapper 接口方法参数相同,另一个就是Map<S

mybatis的基本配置:实体类、配置文件、映射文件、工具类 、mapper接口

搭建项目 一:lib(关于框架的jar包和数据库驱动的jar包) 1,第一步:先把mybatis的核心类库放进lib里 2,第二步:导入第三方类库(在lib里).mybatis的核心类库在运行时还依赖一些第三方类库 3,第三步:导入连接数据库驱动jar包 二:创建mybatis的配置文件 1,第一步:先创建实体包,对照着表结构把实体类写出来.封装好就是写get,set方法------不像hibernate,可以自动的将表名字段名与实体类相对应,不用自己手写实体类与映射文件 2,第二步:创建xml

mybatis的简单使用调用mapper接口

mybatis 是apache下的一个面向sql编程的半自动化的ORM持久层的框架.特点:面向sql编程,达到高性能的使用目的. 下面是简单使用 现导入jar包,只有mybatis和数据库驱动包(这里用的是mysql的驱动包)是必须的,其余是日志需要的包 db.properties配置连接池的配置文件 1 jdbc.driverClassName=com.mysql.jdbc.Driver 2 jdbc.url=jdbc:mysql://localhost:3306/mybatis 3 jdbc

mybatis学习之路(三)别名(typeAliases)mapper接口加载映射文件

一.mybatis默认支持别名 别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _float float _boolean boolean string String byte Byte long Long short Short int Integer integer Integer double Double float Float boolean Boolean date Da

mybatis的mapper接口加入Log4j日志

配置Log4J比较简单, 比如需要记录这个mapper接口的日志: package org.mybatis.example;public interface BlogMapper {   @Select("SELECT * FROM blog WHERE id = #{id}")   Blog selectBlog(int id);} 只要在应用的classpath中创建一个名称为log4j.properties的文件, 文件的具体内容如下: # Global logging conf

mybatis 详解(六)------通过mapper接口加载映射文件

通过 mapper 接口加载映射文件,这对于后面 ssm三大框架 的整合是非常重要的.那么什么是通过 mapper 接口加载映射文件呢? 我们首先看以前的做法,在全局配置文件 mybatis-configuration.xml 通过 <mappers> 标签来加载映射文件,那么如果我们项目足够大,有很多映射文件呢,难道我们每一个映射文件都这样加载吗,这样肯定是不行的,那么我们就需要使用 mapper 接口来加载映射文件 以前的做法: 改进做法:使用 mapper 接口来加载映射文件 1.定义

Mybatis 使用Mapper接口的Sql动态代码方式进行CURD和分页查询

1.Maven的pom.xml 2.配置文件 2.1.db.properties 2.2.mybatis.xml 2.3.log4j.xml 3.MybatisUtil工具类 4.Mapper映射文件 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http