首页 > 其他分享 >mybatis

mybatis

时间:2023-04-17 22:45:21浏览次数:23  
标签:account name money public mybatis id String

一.Mybatis简介

1.什么是Mybatis?
MyBatis是一个优秀的持久层框架,它对jdbc操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

2.持久化

持久化就是将程序的数据在持久状态和瞬时状态转化的过程
内存:断电即失
数据库(JDBC),io文件持久化。
生活:冷藏、罐头。

为什么需要持久化?------------------------有一些对象,不能让他丢掉。

3. 代码

1.数据库

CREATE DATABASE IF NOT EXISTS myTest;
use myTest;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `account`;
 
CREATE TABLE `account` (
  `id` int(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '编号',
  `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `money` DOUBLE NOT NULL DEFAULT '0.0' COMMENT '余额',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='账户信息表';
INSERT INTO account(name, money) VALUES("张三", 400.0);
INSERT INTO account(name, money) VALUES("李四", 1100.0);

2.根据数据库的结构编写对应的Bean类。

package cn.gqx.bean;

import java.io.Serializable;

public class Account implements Serializable {

    private Long id;

    private String name;

    private double money;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public Account(Long id, String name, double money) {
        this.id = id;
        this.name = name;
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", money=" + money +
                '}';
    }
}

3.针对该类编写该类的操作接口IAccountDao与映射IAccountDao.xml文件。

public interface IAccountDao {
    List<Account> findAll();
}
<?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="cn.gqx.dao.IAccountDao">
    <!-- 查询所有信息-->
    <select id="findAll" resultType="cn.gqx.bean.Account">
        select * from account
    </select>
</mapper>

4. 配置mybatis的数据库映射配置xml(SqlMapConfig.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>
    <!--
    environments 主要用于进行数据源的配置
    可以配置多个数据源~ 通过default属性来指定当前项目运行过程中使用的是哪个数据源
    -->
    <environments default="development">
        <!--
        environment 用于配置一个具体的独立的数据源
        id属性用于给当前数据源定义一个名称,方便我们的项目指定
        -->
        <environment id="development">
            <!--
            transactionManager用于配置事务管理,默认情况下使用的是JDBC事务管理
            -->
            <transactionManager type="JDBC"/>
            <!--
            dataSource具体数据源的链接信息;type属性用于指定是否使用连接池
            -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/myTest?characterEncoding=utf8&useUnicode=true&useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!-- mappers主要用于配置我们外部的映射配置文件
        在主配置文件中需要引入加载映射配置文件
     -->
    <mappers>
        <!-- mapper主要配置引入某一个具体的映射文件,resource进行路径方式的引入 -->
        <mapper resource="mapper/IAccountDao.xml"/>
    </mappers>
</configuration>

5. 测试类

public class TestMybatis {

    @Test
    public void test() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream is = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session= sqlSessionFactory.openSession();
        List<Account> list = session.selectList("findAll");
        for (Account account:list){
            System.out.println(account);
        }
        session.close();
    }

}

  

  

 

标签:account,name,money,public,mybatis,id,String
From: https://www.cnblogs.com/helloworldcode/p/17327812.html

相关文章

  • mybatis环境搭建
    1.使用工具IDEA,MySQL数据库,maven2.开始搭建2.1数据表的创建CREATETABLE`user`(`id`INT(20)NOTNULLPRIMARYKEY,`name`VARCHAR(30)DEFAULTNULL,`password`VARCHAR(30)DEFAULTNULL)ENGINE=INNODBDEFAULTCHARSET=utf8;2.2依赖的导入需要导入的依赖有<......
  • Mybatis的"#"符号和"$"符号
    #是一个占位符,$是拼接符。 #{}和${}的区别是什么?1. #{} 是预编译处理,${}是字符串替换。2. Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;3. Mybatis在处理${}时,就是把${}替换成变量的值。4. 使用#{}可以有效的防止SQL注入,提高系统安全......
  • Mybatis学习总结(转载)
    前言众所周知,MyBatis是对JDBC进行封装而成的产品,所以,聊MyBatis源码之前我们得先了解JDBC。推荐:JDBC这个问题,问的小伙伴一脸懵逼JDBCJDBC案例:publicclassJdbcDemo{publicstaticfinalStringURL="jdbc:mysql://localhost:3306/mblog";publicstaticfinalSt......
  • Mybatis源码深度解析(转载)
    我们从一个简单案例入手,接着就是一步一步的剥开Mybatis的源码,大量的图文结合。Mybatis使用案例添加mybatis和mysql相关pom依赖。<!--Mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</......
  • MyBatis获取参数的方式
    1MyBatis获取参数值的两种方式:${}和#{}2${}的本质就是字符串拼接,#{}的本质就是占位符赋值3${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动......
  • 搭建一个MyBatis项目
    开发环境:idel+maven+MySql+MyBatis项目结构图:1.创建maven工程,引入maven依赖2.创建MyBatis的核心配置文件在resources下创建mybatis-config.xml文件,粘贴如下信息3.创建mapper接口4.创建MyBatis的映射文件映射文件的命名规则1.表所对应的实体类的类名+Mapper.xml2.例如......
  • 关于Mybatis中常见的问题以及解决办法
    一.基础问题问题一:所有的配置没问题时,查询的数据库却为空,首先可以确定的是配置没问题,数据库连接也没有问题,那就可能是数据读取有问题了 有三种解决办法解决办法:(1)去实体类修改set方法,Mybatis是通过set方法进行查询的,所以只需要修改set方法就可以查询得到(不推荐使用)     ......
  • MybatisPlusGenrator 代码生成器官方文档 运行不了?
    有dataSourceConfig就报错直接删掉......
  • mybatisPlus-条件查询
    QueryWrapper说明:      继承自AbstractWrapper,自身的内部属性entity也用于生成where条件及LambdaQueryWrapper,可以通过newQueryWrapper().lambda()方法获取.测试用表:1.eq、ne说明:eq:等于,ne:不等于测试:@TestpublicvoidcontextLoads(){Quer......
  • mybatisPlus-分页查询
    添加分页插件importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;importcom.baomidou.mybatisplu......