Mybatis框架整合详解(从数据库创建—到—框架搭建—再到—输出) 2

简介: Mybatis框架整合详解(从数据库创建—到—框架搭建—再到—输出)

创建dao层——重中之重

基础sql

先创建一个Mapper接口,再简单的写个增、删、改、查接口

package com.xinxi2.dao;
import com.xinxi2.bean.Student;
import java.util.List;
public interface StudentMapper {
    List<Student> getList();
    int addStudent(Student student);
    int updateStudent(Student student);
    int deleteStudentbyId(int id);
}

再创建一个Mapper的XML配置文件来实现这个接口

映射规则

mapper标签中的namespace属性映射的是你刚刚创建的Mapper接口,映射的是你刚刚创建的Mapper接口的地址,映射完毕后Mapper接口和MapperXML配置文件的图标会变为一直蓝鸟和一直红鸟如果没有去网上搜索一下,下载一个idea中的Mybatis插件就好了,巨简单,我就不教了。

SpringXMl实现接口

<?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.xinxi2.dao.StudentMapper">
    <select id="getList" resultType="com.xinxi2.bean.Student">
        SELECT id,name,bigname,riqi,GradeID,age FROM student
    </select>
    <insert id="addStudent" parameterType="com.xinxi2.bean.Student" keyProperty="id" keyColumn="id" useGeneratedKeys="true">
        insert into student(id,name,bigname,riqi,GradeID,age)
        values (#{id},#{name},#{bigname},#{riqi},#{gradeid},#{age})
    </insert>
    <update id="updateStudent" parameterType="com.xinxi2.bean.Student">
        update student
        set name=#{name},bigname={bigname},riqi=#{riqi},GradeID=#{gradeid},age=#{age}
        where id=#{id}
    </update>
    <delete id="deleteStudentbyId" parameterType="int">
        delete from student where id=#{id}
    </delete>
</mapper>

你们应该也发现了每个标签都有大差不差的属性,下面是我认为常用的一些属性

常用属性

id (都能用)与namespace接口中对应的方法作的映射
parameterType (都能用)传入的参数格式
resultType (用于查询)返回的数据类型,当返回多个参数的时候,建议使用 resultMap
resultMap (用于查询)返回的数据类型,相当于对 resultType的封装。resultType、resultMap两者只能存在一个如果使用resultMap的话要把查询出来的几列数据都要声明一下。

image.png

基础sql测试

测试的漏洞

在测试之前我们要先把dao层的MapperXML配置文件放在target里面的dao层中


测试时是运行target里面的代码,我们这样写现在是有一点问题因为还没有学spring框架,这样写方便学习(注意)每次编写完一次MapperXML的文件都要复制进来一次

开始测试

package com.xinxi2;
import com.xinxi2.bean.Student;
import com.xinxi2.dao.StudentMapper;
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.InputStream;
import java.util.Date;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        //声明mybatis配置文件
        String resources="mybatis.xml";
        InputStream inputStream=null;
        SqlSessionFactory sqlSessionFactory=null;
        //获得sqlSession对象
        SqlSession sqlSession=null;
        try {
            inputStream= Resources.getResourceAsStream(resources);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession=sqlSessionFactory.openSession();
            //创建StudentDao层对象
            StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
            List<Student> list=studentMapper.getList();
            for (Student student:list){
                System.out.println(student.getName());//输出name
            }
            Student student=new Student();
            student.setName("牛牛");
            student.setBigname("牛圈");
            student.setRiqi(new Date());
            student.setGradeid(1);
            student.setAge(18);
            studentMapper.addStudent(student);
            //新镇修改删除都要有提交事务
            sqlSession.commit();
            //新增后获取的自增id
            System.out.println(student.getId());
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }
}

修改和删除就先省略了,我相信你会

进阶带参sql查询

单参数方式

一个参数的情况下但是两个参数呐?这时候就需要用到我们的@Param()注解了

@Param()注解方式


如果有两个及以上参数并且使用了@Param()注解就不需要parameterType属性了

Map方式

如果使用map方式的话在测试时,要把map当作数组来使用,sql中的#{name}要在创建map键值里要有一个k值是name

实体类方式

上面的三种方式是在特殊的情况下使用,真正常用的是实体类的方式

实体类方式测试
package com.xinxi2;
import com.xinxi2.bean.Student;
import com.xinxi2.dao.StudentMapper;
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.InputStream;
import java.util.Date;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        //声明mybatis配置文件
        String resources="mybatis.xml";
        InputStream inputStream=null;
        SqlSessionFactory sqlSessionFactory=null;
        //获得sqlSession对象
        SqlSession sqlSession=null;
        try {
            inputStream= Resources.getResourceAsStream(resources);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession=sqlSessionFactory.openSession();
            //创建StudentDao层对象
            Student student=new Student();
            student.setName("牛牛");
            student.setBigname("牛圈");
            student.setId(1);
            StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
            List<Student> list=studentMapper.getListbyStudent(student);
            for (Student student1:list){
                System.out.println(student1.getName());//输出name
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }
}


相关文章
|
4天前
|
SQL 关系型数据库 MySQL
探索Gorm - Golang流行的数据库ORM框架
探索Gorm - Golang流行的数据库ORM框架
|
4天前
|
SQL Java 数据库连接
MyBatis 框架入门理论与实践
MyBatis 框架入门理论与实践
33 6
|
4天前
|
SQL 缓存 Java
持久层框架MyBatis
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的操作。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
28 1
|
1天前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
|
4天前
|
SQL 缓存 Java
【框架】MyBatis 框架重点解析
【框架】MyBatis 框架重点解析
7 0
|
4天前
|
SQL 前端开发 Java
【个人博客系统网站】框架升级 · 工程目录 · 数据库设计
【个人博客系统网站】框架升级 · 工程目录 · 数据库设计
8 0
|
4天前
|
SQL Java 数据库连接
【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态SQL(下)
【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态
5 0
|
4天前
|
SQL Java 数据库连接
【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态SQL(上)
【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态SQL
5 0
|
4天前
|
SQL Java 数据库连接
【JavaEE】懒人的福音-MyBatis框架—[单表]增删改查等常规操作(下)
【JavaEE】懒人的福音-MyBatis框架—[单表]增删改查等常规操作
7 0
|
4天前
|
SQL 前端开发 Java
【JavaEE】懒人的福音-MyBatis框架—[单表]增删改查等常规操作(上)
【JavaEE】懒人的福音-MyBatis框架—[单表]增删改查等常规操作
8 0