hualinux spring 4.20: 使用MyBatis-Spring操作数据库

目录

一、前言

1.1 mybatis说明

1.2 关于mybatis-spring

1.3 安装前说明

二、mybatis-spring安装

三、例1:通过sid查单个记录(注解式)

3.1 例子说明

3.2 目录结构

3.3 实现代码

3.3.1 学生表结构

3.3.2 通过SqlSessionFactoryBean生成SqlSessionFactory工厂

3.3.3 注入映射器mapper

3.3.4 通过SqlSessionDaoSupport实现Dao功能

3.3.5 编写main方法

3.4 查询学生表的所有学生

附录一、创建mysql数据

附录二、MyBatis的SqlSession常用方法


我们在实际开发的对数据库操作一般使用专业的数据库框架,目前比较流行的就是mybaits,所以本章讲一下。

MyBatis-Spring使用起来也简单,官方也支持中文 ,如果用springBoot加入mybatis更是简单快捷!

一、前言

1.1 mybatis说明

我们没使用mybatis之前使用最多的是Hibernate,Hibernatehibernate可以自动生成SQL语句,自动执行,当我们有些需要自己制定实现“半自动”的场景就不适合了,如

1. 只对外开放部分敏感的SQL语句,其它敏感的SQL不能生成。

2. 涉及逻辑部分的数据库操作必须由存储过程完成,金融行业,比如银行是最严格的。

3. 高并的时候,需要做SQL优化,修改SQL语句。

等等,面对这样的需求Hibernate不再适合,所以使用jdck进行数据库操作也不错,但是麻烦,而“半自动化”的Mybatis刚好解决了上面的问题。

 

Mybatis使用的是ORM对象关系映射(Object Relational Mapping)进行设计的,关系数据库拿mysql为例:

  1. 数据表的行映射对象(即实例)
  2. 数据表的列(字段)映射对象的属性

1.2 关于mybatis-spring

mybatis-spring看名字就知道是spring的一个插件,向spring提供mybatis的支持。

在学习mybatis-spring之前需要会使用spring,其它懂mybatis,有兴趣的话可以看一下mybatis中文官网:http://www.mybatis.org/mybatis-3/zh/getting-started.html,了解一下mybatis概念,一般花1-2小时就看完了。下面是MyBatis 框架的执行流程图

 

mybatis-spring使用比mybatis简单得多了,中文官网为

http://www.mybatis.org/spring/zh/index.html  看一下入门大概半天就搞定了。具体我也不多讲了。

 

要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:

一个 SqlSessionFactory 和至少一个数据映射器类。

SqlSessionFactory :
可以使用SqlSessionFactoryBean 来创建,在此之前需要一个 DataSource(数据源)。 这可以是任意的 DataSource,只需要和配置其它 Spring 数据库连接一样配置它就可以了。其它可以先不设置

MapperFactoryBean :
通过它将接口加入到 Spring 中,将会负责 SqlSession 的创建和关闭。如果使用了 Spring 的事务功能,那么当事务完成时,session 将会被提交或回滚。最终任何异常都会被转换成 Spring 的 DataAccessException 异常。

就记住上面2大重点就行了。其中Mapper可以使用手工的和扫描方式。

 

1.3 安装前说明

名称

版本

安装方式

备注

系统

win10

-

64位,旗舰版

jdk

14.0.1

exe

java开发工具目前最高最新版本

idea

2020.1

exe

java最著名的ide工具

具体安装见:《hualinux java 1.5:java开发工具idea 2020安装及配置

我是按照《hualinux spring 4.15:spring添加maven支持 10分钟学会mavne》文章建立了一个名为spring-mybatis的spring项目,并添加了maven支持、指定了java版本,所使用的依赖如下:

根据mybatis-spring官网 知道下列需要安装的

安装上面的spring、spring Batch、MyBatis、MyBatis-Spring还不行,还需要安装下面的基础依赖 

c3p0:主要是读取外部配置文件,一般数据库配置文件放在外部,我这里使用yml方式

mchange-commons-java:c3p0数据库连接池的辅助包

mysql-connector-java:mysql的jdbc驱动包,是java连接mysql数据库使用的,我这里只是配置文件,并没用到mysql数据库
spring-jdbc:spring操作jdbc操作数据库用的,如mysql数据库

是不是要安装很多软件啊?!如果你不用maven这种管理工具,那就有比较郁闷了。

 

二、mybatis-spring安装

根据官网 mybatis-spring 官网 http://www.mybatis.org/spring/zh/index.html

MyBatis-Spring是Spring支持MyBatis的插件,所以MyBatis肯定是要安装的,Spring也是要的,Spring是基于java,spring batch能读取大量数据并批量处理,还可以格式化数据写入数据库中。

我这里使用的是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.hualinx</groupId>
    <artifactId>spring-mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <!-- #########################数据库连接 start################################# -->
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.mchange/mchange-commons-java -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>mchange-commons-java</artifactId>
            <version>0.2.20</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>

        <!-- #########################数据库连接 end ################################# -->

        <!-- #########################MyBatis-Spring start############################# -->
        <!--  没有版本5 目前最新版本      -->
        <!-- https://mvnrepository.com/artifact/org.springframework.batch/spring-batch-core -->
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-core</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.batch/spring-batch-infrastructure -->
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-infrastructure</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.5</version>
        </dependency>

        <!-- #########################MyBatis-Spring END ############################# -->

        <!-- JUnit5:单元测试需要用到 在本文可以不安装-->
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <!-- 指定java版本-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>14.0.1</source>
                    <target>14.0.1</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    
</project>

按上面配置好,之后点一下“导入maven改变”

则maven会自动从maven仓库安装软件

一下子就安装好了,是不是比较简单

 

三、例1:通过sid查单个记录(注解式)

3.1 例子说明

     本例子我将以注解方式编写,因为XML方式编写网上已经一大把了,以注解方式编写却很少

      我写一个简单的,主要是以学生表为例子,数据库是mysql,数据表创建见 附录一,实现如下简单功能:

1. 以通过sid(学号)查单个学生成绩,查询学生名、语文、数学成绩。

2. 查询所有学生成绩,包括sid、学生名、语文、数学成绩

其它的自己慢慢探索了

在这里我将会用到mybatis的SqlSession中selectOne()方法和selectList()方法,见附录二

3.2 目录结构

pom.xml:maven配置文件

db.yml:数据库配置文件,这里我使用的是mysql

Stu:学生生POJO对象

StuConf:学生表配置文件

StuMapper:映射类

StuDao:Dao接口层,为什么要写一个接口,在编程基础篇,已经说了,是为了方便扩展

UserDAOImpl:Dao的实现类

MainOfStu:主程序

3.3 实现代码

3.3.1 学生表结构

stu学生表结构如下:

根据上面的表结构,转化为对象,所以要编写一个类来保存,我这里不要id列

com.hualinux.stu.Stu.java代码如下:

package com.hualinux.stu;

public class Stu {
    private String sid;
    private String name;
    private float yuWen;
    private float shuXue;
    private String sex;
    private String zhiWei;

    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getYuWen() {
        return yuWen;
    }

    public void setYuWen(float yuWen) {
        this.yuWen = yuWen;
    }

    public float getShuXue() {
        return shuXue;
    }

    public void setShuXue(float shuXue) {
        this.shuXue = shuXue;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getZhiWei() {
        return zhiWei;
    }

    public void setZhiWei(String zhiWei) {
        this.zhiWei = zhiWei;
    }

    @Override
    public String toString() {
        return "Stu{" +
                "sid='" + sid + '\'' +
                ", name='" + name + '\'' +
                ", yuWen=" + yuWen +
                ", shuXue=" + shuXue +
                ", sex='" + sex + '\'' +
                ", zhiWei='" + zhiWei + '\'' +
                '}';
    }
}

运行mysql按附录一插入数据

 

3.3.2 通过SqlSessionFactoryBean生成SqlSessionFactory工厂

官网:http://www.mybatis.org/spring/zh/factorybean.html

 

MyBatis-Spring 中,可使用 SqlSessionFactoryBean来创建 SqlSessionFactory

SqlSessionFactory 需要一个 DataSource(数据源)。 这可以是任意的 DataSource,只需要和配置其它 Spring 数据库连接一样配置它就可以了。

建立数据配置文件resources-->db.yml

user: hua
pwd: hua123
driverClass: com.mysql.cj.jdbc.Driver
jdbcUrlTest: jdbc:mysql://127.0.0.1:3306/hua_test?serverTimezone=GMT%2B8
jdbcUrlDev: jdbc:mysql://127.0.0.1:3306/hua_dev?serverTimezone=GMT%2B8
jdbcUrlProd: jdbc:mysql://127.0.0.1:3306/hua?serverTimezone=GMT%2B8

注:冒号后面都有一个空格的,而且不能漏掉!这个是由YAML语法决定的

com.hualinux.stu.StuConf.java

package com.hualinux.stu;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@PropertySource(value={"classpath:/db.yml"})
@ComponentScan("com.hualinux.stu")
@Configuration
public class StuConf {

    @Value("${user}")
    private String user;
    @Value("${pwd}")
    private String pwd;
    @Value("${driverClass}")
    private String driverClass;
    @Value("${jdbcUrlTest}")
    private String jdbcUrlTest;
    @Value("${jdbcUrlDev}")
    private String jdbcUrlDev;
    @Value("${jdbcUrlProd}")
    private String jdbcUrlProd;


    //数据源
    @Bean
    public DataSource dataSource() throws Exception{
        //主要是测试一下是否读到db.yml文件数据,及是否填写正确,密码不能输出!
        System.out.println(user+"\n"+jdbcUrlProd+"\n"+driverClass);
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setUser(user);
        dataSource.setPassword(pwd);
        dataSource.setDriverClass(driverClass);
        //测试环境使用的数据库
        dataSource.setJdbcUrl(jdbcUrlProd);
        return dataSource;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        // 设置数据源
        factoryBean.setDataSource(dataSource());
        return factoryBean.getObject();
    }

}

3.3.3 注入映射器mapper

官网:http://www.mybatis.org/spring/zh/mappers.html

可以通过 MapperFactoryBean 将接口加入到 Spring 中,MapperFactoryBean 将会负责 SqlSession 的创建和关闭。如果使用了 Spring 的事务功能,那么当事务完成时,session 将会被提交或回滚。最终任何异常都会被转换成 Spring  DataAccessException 异常。

#1 编写mapper接口

com.hualinux.stu.mapper.StuMapper.java

package com.hualinux.stu.mapper;

import com.hualinux.stu.Stu;
import org.apache.ibatis.annotations.Select;

public interface StuMapper {

    @Select("SELECT sid,NAME,yuWen,shuXue FROM stu WHERE sid = #{sid}")
    Stu getStu(String sid);

}

#2. 注入映射器

有2种方式

方式一(推荐,肯定用最简单的):

com.hualinux.stu.StuConf.java配置类上加一个@MapperScan注解,指定mapper所在的目录,下面最顶一个就是了

@MapperScan("com.hualinux.stu.mapper")
@PropertySource(value={"classpath:/db.yml"})
@ComponentScan("com.hualinux.stu")
@Configuration
public class StuConf {

方式二(了解):

 com.hualinux.stu.StuConf.java类,加多一个注册器bean,如下:

    /**
     * 如果没有编写映射器,那么在类上面添加 @MapperScan 注解即可
     * MapperFactoryBean 将会负责 SqlSession 的创建和关闭。
     * 如果使用了 Spring 的事务功能,那么当事务完成时,session 将会被提交或回滚。
     */
    @Bean
    public MapperFactoryBean<StuMapper> stuMapper()   throws Exception{
        MapperFactoryBean<StuMapper> factoryBean = new MapperFactoryBean<StuMapper>(StuMapper.class);
        // 所指定的映射器类必须是一个接口,而不是具体的实现类
        factoryBean.setMapperInterface(StuMapper.class);
        factoryBean.setSqlSessionFactory(sqlSessionFactory());
        return factoryBean;
    }

一看上面方法二就晕,还是方式一好,直接在类的顶上加一个 @MapperScan注解即可

此时com.hualinux.stu.StuConf.java的完整代码为:

package com.hualinux.stu;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;

@MapperScan("com.hualinux.stu.mapper")
@PropertySource(value={"classpath:/db.yml"})
@ComponentScan("com.hualinux.stu")
@Configuration
public class StuConf {

    //读取db.yml的值
    @Value("${user}")
    private String user;
    @Value("${pwd}")
    private String pwd;
    @Value("${driverClass}")
    private String driverClass;
    @Value("${jdbcUrlTest}")
    private String jdbcUrlTest;
    @Value("${jdbcUrlDev}")
    private String jdbcUrlDev;
    @Value("${jdbcUrlProd}")
    private String jdbcUrlProd;


    //数据源
    @Bean
    public DataSource dataSource() throws Exception{
        //主要是测试一下是否读到db.yml文件数据,及是否填写正确,密码不能输出!
        System.out.println(user+"\n"+jdbcUrlProd+"\n"+driverClass);
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setUser(user);
        dataSource.setPassword(pwd);
        dataSource.setDriverClass(driverClass);
        //测试环境使用的数据库
        dataSource.setJdbcUrl(jdbcUrlProd);
        return dataSource;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        // 设置数据源
        factoryBean.setDataSource(dataSource());
        return factoryBean.getObject();
    }

}

 

3.3.4 通过SqlSessionDaoSupport实现Dao功能

SqlSessionDaoSupport 是一个抽象的支持类,用来为你提供 SqlSession。调用 getSqlSession() 方法你会得到一个 SqlSessionTemplate,之后可以用于执行 SQL 方法。

SqlSessionTemplate  MyBatis-Spring 的核心。作为 SqlSession 的一个实现,这意味着可以使用它无缝代替你代码中已经在使用的 SqlSessionSqlSessionTemplate 是线程安全的,可以被多个 DAO 或映射器所共享使用。

#1编写dao接口

com.hualinux.stu.StuDao.java代码

package com.hualinux.stu;

public interface StuDao {
    public Stu findStuBySid(String sid) throws Exception;
}

#2 编写dao实现类

package com.hualinux.stu;

import org.mybatis.spring.support.SqlSessionDaoSupport;

public class UserDAOImpl extends SqlSessionDaoSupport implements StuDao {
    @Override
    public Stu findStuBySid(String sid) throws Exception {
        // 继承 SqlSessionDaoSupport 类,通过 this.getSqlSession() 得到 sqlSession
        return getSqlSession().selectOne("com.hualinux.stu.mapper.StuMapper.findUserById",sid);
    }
}

3.3.5 编写main方法

com.hualinux.stu.MainOfStu.java

package com.hualinux.stu;

import com.hualinux.stu.mapper.StuMapper;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MainOfStu {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(StuConf.class);
        StuMapper stuMapper = (StuMapper) ctx.getBean("stuMapper");
        Stu stu = stuMapper.getStu("1");
        System.out.println("学号:"+stu.getSid()+"\n名字:"+stu.getName()+"\n语文:"+
                stu.getYuWen()+ "\n数学:"+stu.getShuXue());
    }
}

3.3.6 运行main方法

运行上面的com.hualinux.stu.MainOfStu.java,结果如下:

 

3.4 查询学生表的所有学生

上面的源代码不变,直接进行修改就行了,修改如下:

#1 映射器接口添加方法

com.hualinux.stu.mapper.StuMapper.java

//查询所有学生
@Select("SELECT sid,NAME,yuWen,shuXue FROM stu")
List<Stu> getStuAll();

完整代码如下:

package com.hualinux.stu.mapper;

import com.hualinux.stu.Stu;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface StuMapper {

    @Select("SELECT sid,NAME,yuWen,shuXue FROM stu WHERE sid = #{sid}")
    Stu getStu(String sid);

    //查询所有学生
    @Select("SELECT sid,NAME,yuWen,shuXue FROM stu")
    List<Stu> getStuAll();
    
}

#2 Dao使用此方法

com.hualinux.stu.UserDAO.java

package com.hualinux.stu;

import java.util.List;

public interface StuDao {
    public Stu findStuBySid(String sid) throws Exception;
    public List<Stu> findStuAll();
}

com.hualinux.stu.UserDAOImpl.java

package com.hualinux.stu;

import org.mybatis.spring.support.SqlSessionDaoSupport;

import java.util.List;

public class UserDAOImpl extends SqlSessionDaoSupport implements StuDao {
    @Override
    public Stu findStuBySid(String sid) throws Exception {
        // 继承 SqlSessionDaoSupport 类,通过 this.getSqlSession() 得到 sqlSession
        return getSqlSession().selectOne("com.hualinux.stu.mapper.StuMapper.findUserById",sid);
    }

    @Override
    public List<Stu> findStuAll() {
        return getSqlSession().selectList("com.hualinux.stu.mapper.StuMapper.getStuAll()");
    }
}

#3 修改一下主入口代码

com.hualinux.stu.MainOfStu.java

package com.hualinux.stu;

import com.hualinux.stu.mapper.StuMapper;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.Iterator;
import java.util.List;

public class MainOfStu {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(StuConf.class);
        StuMapper stuMapper = (StuMapper) ctx.getBean("stuMapper");
/*        Stu stu = stuMapper.getStu("1");
        System.out.println("学号:"+stu.getSid()+"\n名字:"+stu.getName()+"\n语文:"+
                stu.getYuWen()+ "\n数学:"+stu.getShuXue());*/

        List<Stu> stus = (List<Stu>) stuMapper.getStuAll();
        Iterator<Stu> it = stus.iterator();
        System.out.println("学号--名字---语文---数学");
        while (it.hasNext()) {
            Stu stu = it.next();
            System.out.println(stu.getSid()+ "---" +stu.getName() + "----"+stu.getYuWen() + "---" + stu.getShuXue());
        }

    }

}

运行一下MainOfStu.java,结果如下:

学号--名字---语文---数学
1---张三----51.0---65.0
2---李四----71.0---0.0
3---王五----87.6---90.0
4---陈六----55.9---88.0
0---谢九----77.0---59.0
6---天天----45.0---90.0
7---开心----70.0---100.0
8---乐儿----65.0---50.0
9---乐乐----88.0---29.5
10---笑笑----73.0---69.0
11---fly----90.0---89.0
12---乐天----90.0---70.0
13---云儿----95.0---65.0
14---伊洛----14.0---70.0
15---abc----86.0---98.0
16---菲菲----90.0---99.0
17---mm----71.0---61.0
18---lilei----98.0---61.0
19---hua----90.0---99.5

 

附录一、创建mysql数据

我这里使用mysql创建一个名为hua和stu的学生表,比较简单

CREATE DATABASE /*!32312 IF NOT EXISTS*/`hua` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `hua`;
DROP TABLE IF EXISTS `stu`;

CREATE TABLE `stu` (
  `id` INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
  `sid` VARCHAR(6) NOT NULL,
  `name` VARCHAR(10) NOT NULL,
  `yuWen` FLOAT DEFAULT '0',
  `shuXue` FLOAT DEFAULT '0',
  `sex` CHAR(2) NOT NULL DEFAULT '男',
  `zhiWei` CHAR(6) NOT NULL DEFAULT '学生',
  PRIMARY KEY (`id`),
  UNIQUE KEY `sid` (`sid`)
) ENGINE=INNODB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

/*Data for the table `stu` */

INSERT  INTO `stu`(`id`,`sid`,`name`,`yuWen`,`shuXue`,`sex`,`zhiWei`) VALUES 
(1,'1','张三',51,65,'男','学生'),
(2,'2','李四',71,0,'男','学生'),
(3,'3','王五',87.6,90,'男','学生'),
(4,'4','陈六',55.9,88,'男','学生'),
(5,'0','谢九',77,59,'男','学生'),
(6,'6','天天',45,90,'男','学生'),
(7,'7','开心',70,100,'女','学生'),
(8,'8','乐儿',65,50,'女','音乐委'),
(9,'9','乐乐',88,29.5,'女','学生'),
(10,'10','笑笑',73,69,'女','学生'),
(11,'11','fly',90,89,'男','学生'),
(12,'12','乐天',90,70,'男','副班长'),
(13,'13','云儿',95,65,'女','学生'),
(14,'14','伊洛',14,70,'男','班长'),
(15,'15','abc',86,98,'男','学生'),
(16,'16','菲菲',90,99,'女','学习委'),
(17,'17','mm',71,61,'女','学生'),
(18,'18','lilei',98,61,'男','学生'),
(19,'19','hua',90,99.5,'男','学生');

 

附录二、MyBatis的SqlSession常用方法

sqlSesion常用 的方法如下:

➢int insert(String statement)。插入方法,参数statement是在配置文件中定义的sinscrt..>.元素的id,返回执行SQL语句所影响的行数。

➢int insert(String statement,Object parameter)。插入方法,参数statement是在配置文件中定义的<insert../>元素的id, parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。

➢int update(String statement)。 更新方法,参数statement是在配置文件中定义的<update...>元素的 id,返回执行SQL语句所影响的行数。

➢int update(String statement,Object parameter)。更新方法,参数statement是在配置文件中定义的<uplate../>.元素的id, parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。

➢int delete(String statement)。删除方法,参数statement是在配置文件中定义的<delete../>元素的id.返回执行SQL语句所影响的行数。

➢int delete(String statement,Object parameter)。删除方法,参数staterment是在配置文件中定义的<delete../>元素的id, parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。

➢<T> T selectOne(String statement)。查询方法,参数statement是在配置文件中定义的<select../>元素的id。返回执行SQL语句查询结果的泛型对象,通常查询结果只有一条数据时才使用。

➢<T> T selectOne(String statement,Object parameter)。 查询方法,参数statement是在配置文件中定义的<select.../>元素的id, parameter 是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象,通常查询结果只有一条数据时才使用。

➢<E> List<E> selectL ist(String statement)。 查询方法,参数是在配置文件中定义的<select../>元素的id,返回执行SQL语句查询结果的泛型对象的集合。

➢<E> List<E> selectl ist(String statement,Object parameter)。查询方法,参数statement是在配置文件中定义的<select.../>.元素的id, parameter 是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象的集合。

➢<E> List<E> selectList(String statement,Object parameter,RowBounds rowBounds)。查询方法,参数statement是在配置文件中定义的<select..>元素的id, parameter 是查询所需的参数,通常是对象或者Map。RowBounds对象用于分页,它的两个属性: offset指查询的当前页数;limit指当前页显示多少条数据。返回执行SQL语句查询结果的泛型对象的集合。

➢<K,V> Map<K,V> selectMap(String statement,String mapKey)。 查询方法,参数statement是在配置文件中定义的select..>元素的id, mapKey 是返回数据的其中-一个列名,执行SQL语句查询的结果将会被封装成-一个Map集合返回,key 就是参数mapKey传入的列名,value 是封装的对象。

➢<K,V> Map<K,V> selectMap(String statement,Object parameter, String mapKey)。查询方法,参数statement是在配置文件中定义的<elect.. />元素的id, parameter 是查询所需的参数,通常是对象或者Map, mapKey 是返回数据的其中一个列名,执行SQL语句查询的结果将会被封装成一一个Map集合返回,key就是参数mapKey传入的列名,value是封装的对象。

➢<K,V> Map<K,V>selectMap(String statement,Object parameter,Sring mapKey, RowBounds rowBounds)。查询方法,参数staterment是在配置文件中定义的<select../>.元素的id,parameter是查询所需的参数,通常是对象或者Map, mapKey 是返回数据的其中一个列名,RowBounds 对象用于分页。执行SQL语句查询的结果将会被封装成- -个Map集合返回,key 就是参数mapKey传入的列名,value 是封装的对象。

➢void select(String statement,ResultHandler handler)。查询方法,参数statement是在配置文件中定义的<elct..>元素的id, ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。

➢void select(String statement,Object parameter,ResultHandler handler)。查询方法,参数statement是在配置文件中定义的<select../>元素的id, parameter 是查询所需的参数,通常是对象或者Map, ResultHandler 对象用来处理查询返回的复杂结果集,通常用于多表查询。

➢void select(Sring statement,Object parameter,RowBounds rowBounds, ResultHandler handler)。查询方法,参数statement是在配置文件中定义的<select../>元素的id,parameter是查询所需的参数,通常是对象或者Map, RowBounds 对象用于分页,ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。

➢void commit)。提交事务。

➢void rllback)。 回滚事务。

➢void close)。关闭SqlSession对象。

➢Connection getConnection()。获得JDBC的数据库连接对象。

➢<T> T getMapper(Class<T> type)。 返回mapper接口的代理对象,该对象关联了SlSession对象,开发者可以通过该对象直接调用方法操作数据库,参数type是Mapper的接口类型。MyBatis 官方手册建议通过mapper对象访问MyBatis.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值