MyBatis

简介

  • MyBatis是一款优秀的持久化框架,支持定制化sql,存储过程以及高级映射。
  • MyBatis避免了几乎所有的jdbc代码和手动设置参数以及获取结果集。
  • MyBatis可以用XML或注解来配置和映射原生信息,讲接口和Java POJO映射成数据库中的记录。

使用MyBatis所需的jar包

单元测jar相关maven依赖

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${project.junit}</version>
        </dependency>

MyBatis相关依赖
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${project.mybatis}</version>
        </dependency>

mysql相关依赖
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${project.jdbc.connection}</version>
        </dependency>
    </dependencies>

 

对应的model类

package com.xalo.model;

public class Student {

    private Integer id;
    
    private String name;
    
    private Integer age;

    public Student(Integer id, String name, Integer age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }

    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 getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    } 
}

要使用mybatis需要在xml文件中有以下有关链接数据库方面的配置:

myByatis-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>
    <!--为java类型起一个别名,在配置文件中可直接使用别名, 作用:书写方便 大小写不敏感 -->
    <typeAliases>
        <typeAlias type="com.xalo.model.Student" alias="Student" />
    </typeAliases>
    <!-- 数据库环境配置 一个环境对应一个数据库 将来和spring整合之后 就不再配置 -->
    <environments default="development">
        <environment id="development">
            <!-- 事务类型配置 JDBC:使用JDBC的事务管理 -->
            <transactionManager type="JDBC" />
            <!-- 数据源配置 POOLED:使用mybatis默认的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url"
                    value="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false" />
                <property name="username" value="root" />
                <property name="password" value="q6rwqrtdy" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/xalo/model/studentMapping.xml" />
        <mapper resource="com/xalo/dao/studentDao.xml" />
    </mappers>
</configuration>

我们说mybatis是面向接口的编程所以我们申明一下接口,实现一下接单的crud

package com.xalo.dao;

import java.util.List;

import com.xalo.model.Student;

public interface StudentDao {

    public void addStudent(Student student);
    
    public List<Student> queryAllStudent();
    
    public Student queryStudentById(Integer id);
    
    public Integer updateNameById(String name,Integer id);
}

<?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">
<!-- mybatis面向接口编程:可以将该配置文件看做是接口的实现类 最终会根据该配置文件生成对应接口的实现类

1.namespace:需要写成接口的完整类名:包名.接口名

2.sql语句的id必须是对应的方法名

3.parameyerType必须和方法的参数的类型保持一致

4.resultType必须和方法的返回值保持一致 -->

<mapper namespace="com.xalo.dao.StudentDao">
    <insert id="addStudent" parameterType="Student">
        insert into student (id,name,age) values(#{id},#{name},#{age});
    </insert>
    <select id="queryAllStudent" resultType="Student">
        select * from student;
    </select>
    <select id="queryStudentById" parameterType="Integer"
        resultType="Student">
        select * from student where id =#{id};
    </select>
    <!-- 小结(问题):mybatis在3.4.4之后不能直接使用#{index} 替换为#{argindex} index指参数的为值从0开始 -->
    <!--所有的更新(增删改)操作,不用指定返回值类型,
        默认返回受影响的行数
      -->

    <update id="updateNameById" parameterType="java.util.Map">
        update student set name=#{arg0} where id=#{arg1};
    </update>
</mapper>

接下来我们就可以在单元测试运行测试代码来完成操作,这里有一个加载顺序如下:

import org.junit.Test;

import com.mysql.jdbc.interceptors.SessionAssociationInterceptor;
import com.xalo.model.Student;

public class MybatisTest {

    //插入的测试方法
//    @Test
//    public void insertTest(){
//        /*
//         * 1.读取mybatis的配置文件
//         * 2.通过sessionFactoryBuilder加载sessionFactory
//         * 3.sessionFactory加载session对象
//         * 4.通过session对象使用映射文件中的sql语句进行crud操作
//         */
//    
//         try {
//            
//             //读取配置文件
//            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//            
//            //加载配置文件并创建sessionFactory工厂
//            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//            SqlSessionFactory sf= builder.build(in);
//            
//            //创建session对象
//            SqlSession session = sf.openSession();
//            
//            //创建要插入数据库的对象
//            Student student = new Student(1,"晓刚",22);
//            
//            /*
//             * 参数一:映射文件中的SQL语句(namespace.id)
//             * 参数二:要插入的数据
//             */
//            
//            
//            //删除
//            
//            session.delete("com.xalo.model.student.deleteStudent",student);
////            session.insert("com.xalo.model.Student.addStudent",student);
//            
//            session.commit();
//            session.close();
//        } catch (IOException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
//    }
    //更新操做根据name该name
//    @Test
//    public void updateStudent(){
//        
//    try {
//        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//    
//        SqlSessionFactory sFactoryBuilder = new SqlSessionFactoryBuilder().build(inputStream);
//        
//        SqlSession session = sFactoryBuilder.openSession();
//        //根据name该name
//        Map< String, String> map = new HashMap<String, String>();
//        map.put("newName", "小花");
//        map.put("oldName", "晓刚");
//        session.update("com.xalo.model.Student.updateStuName",map);
//        
//        session.commit();
//        session.close();
//        
//    } catch (IOException e) {
//        // TODO Auto-generated catch block
//        e.printStackTrace();
//    }
//    
//    }
    //查询单条记录的方法
    @Test
    public void queryStudent(){
        
        try {
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            
            SqlSessionFactory sfFactory = new SqlSessionFactoryBuilder().build(inputStream);
            
            SqlSession session = sfFactory.openSession();
            //查询单条
//            Student student = session.selectOne("com.xalo.model.Student.queryStudentById",3);
            
            //查询多条
            //List<Student> student = session.selectList("com.xalo.model.Student.queryAllStudent");
            
            //查询所有名字
//            List<String> studentName =  session.selectList("com.xalo.model.Student.queryStudentByName");
            
            //查询想要的字段
            List<Map<String, Object>> list = session.selectList("com.xalo.model.Student.queryStuNameAndAge");
            session.commit();
            
            session.close();
            
            System.out.println(list);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }         
    }
}

以上是我整理的关于myBatis的简单数据操作,希望能帮助大家,同事也希望大家给出宝贵意见。

计及源荷不确定性的综合能源生产单元运行调度与容量配置优化研究(Matlab代码实现)内容概要:本文围绕“计及源荷不确定性的综合能源生产单元运行调度与容量配置优化”展开研究,利用Matlab代码实现相关模型的构建与仿真。研究重点在于综合能源系统中多能耦合特性以及风、光等可再生能源出力和负荷需求的不确定性,通过鲁棒优化、场景生成(如Copula方法)、两阶段优化等手段,实现对能源生产单元的运行调度与容量配置的协同优化,旨在提高系统经济性、可靠性和可再生能源消纳能力。文中提及多种优化算法(如BFO、CPO、PSO等)在调度与预测中的应用,并强调了模型在实际能源系统规划与运行中的参考价值。; 适合人群:具备一定电力系统、能源系统或优化理论基础的研究生、科研人员及工程技术人员,熟悉Matlab编程和基本优化工具(如Yalmip)。; 使用场景及目标:①用于学习和复现综合能源系统中考虑不确定性的优化调度与容量配置方法;②为含高比例可再生能源的微电网、区域能源系统规划设计提供模型参考和技术支持;③开展学术研究,如撰写论文、课题申报时的技术方案借鉴。; 阅读建议:建议结合文中提到的Matlab代码和网盘资料,先理解基础模型(如功率平衡、设备模型),再逐步深入不确定性建模与优化求解过程,注意区分鲁棒优化、随机优化与分布鲁棒优化的适用场景,并尝试复现关键案例以加深理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊掌渔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值