MyBatis学习-1

MyBatis学习-1

在学习Java后端的过程中,很重要的一部分就是要去操作数据库,实现持久层,我们最开始使用JDBC这样的工具去操作,后来会使用Spring封装的JdbcTemplate,但这些仅仅只能算是工具,和全自动映射ORM(Object Relation Mapping)框架的整体解决方案相比较还是差得远。
通常我们使用JDBC的操作流程为:

  1. 编写sql
  2. 预编译
  3. 设置参数
  4. 执行sql
  5. 封装结果

当我们使用ORM方式的时候,只需要创建好JavaBean,和操作DbRecords就好了中间的部分呢框架来实现,就是我们代码中的实现类,和数据库中的表一一对应的意思啦,当然他有他的缺点,因为所有的操作都是框架来实现,所以你不能对他进行优化,一些复杂的sql语句也得自己去定制,所以呢我们希望sql交给开发人员,希望sql不失去灵活性,所以我们使用Mybatis,编写sql语句放到我们的配置文件当中去,剩下的让框架自己去执行,这样既不少灵活性,又可以方便很多,sql与java编码分离。


Hello World

接下来我们用Mybatis写一个Test,首先我们先去创建一个数据库名字叫做mybatis然后去添加一个table

CREATE TABLE `tbl_employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `last_name` varchar(255) DEFAULT NULL,
  `gender` char(1) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) 

在表中添加一条记录id=1,剩下的随便写了

创建一个持久层的类与数据库中的表,属性和表中的列对应:

package com.snake_lvyonghao.MyBatis.bean;

public class Employee {
    private Integer id;
    private String Lastname;
    private String email;
    private String gender;

    public Integer getId() {
        return id;
    }

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

    public String getLastname() {
        return Lastname;
    }

    public void setLastname(String lastname) {
        Lastname = lastname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", Lastname='" + Lastname + '\'' +
                ", email='" + email + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}


下面写一个MyBatis的Demo

package com.snake_lvyonghao.MyBatis.test;

import com.snake_lvyonghao.MyBatis.bean.Employee;
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 org.junit.Test;

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

public class MyBatistest {
    @Test
    public void test() throws IOException {
        String resource = "Mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);

        //获取sqlSession实例,能直接执行已经映射的sql语句
        SqlSession opensession = sqlSessionFactory.openSession();

        //两个参数,sql的唯一标示,执行sql的参数
        try {
            Employee e = opensession.selectOne("org.mybatis.EmployeeMapper.selectEmp",1);
            System.out.println(e);
        }finally {
            opensession.close();
        }
    }
}


当然配置文件我也准备好了,直接在工程文件中的resource文件夹当中添加就好了
Mybaits-config.xml:
和JDBC一样设置Diviver,数据库的位置,用户名,密码,还有很重要的一点就是设置mapper resource,就是你的sql映射文件

<?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="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?userSSL=FALSE"/>
                <property name="username" value="root"/>
                <property name="password" value="12345678"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="EmployeeMapper.xml"/>
    </mappers>
</configuration>

EmployeeMapper(sql映射文件):
在Mapper文件当中我们要设置他的namespace,设置这个映射文件的唯一标示,还有他的返回类型,在这里我们是持久层的操作所以返回类型就是一个Employee类了,要写上这个类的路径,最后设置好你的sql语句就ok了
其中的#{id} 和JDBC当中的?和是一样的就是一个占位符。

<?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="org.mybatis.EmployeeMapper">

    <!--
    namespace名称空间
    id唯一标示
    resultType,返回值类型
    #{id}从传递过来的参数中取出id值-->
    <select id="selectEmp" resultType="com.snake_lvyonghao.MyBatis.bean.Employee">
    select id,last_name  lastName,email,gender from tbl_employee where id = #{id}
  </select>
</mapper>

run一下我们可以看到他给出的结果:Employee{id=1, Lastname='tom', email='tom@atguigu', gender='0'}这个结果正是我在数据库当中添加的id=1的那一条记录

总结

    /**
     * 1.根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象
     *      有一些数据源运行信息
     * 2.sql映射文件;配置可每一个sql,以及sql的封装规则,
     * 3.将sql映射文件注册在全局配置文件当中
     * 4.写代码
     *      1)根据全局配置文件得到SqlSessionFactory
     *      2)使用sqlSession工厂,获取到sqlSession对象使用它来执行增删改查
     *      一个sqlSession就是代表和数据库的一次会话,用完关闭
     *      3)使用sql的唯一标示告诉MyBatis执行那个sql,sql都保存在映射文件当中
     */

最后再放上这个Demo的代码SSM框架源码中的MyBatis文件就是我们的项目了,祝大家在学习MyBatis中旗开得胜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值