MyBatis入门

MyBatis入门到精通——入门篇 目录一、什么是 MyBatis?二、入门案例(1)创建maven项目(2)引入依赖包(3)创建数据库执行sql脚本三、入门程序源码(1)User.java(2)UserMapper.java(3)MybatisUtils.java(4)UserMapperTest.java(6)UserMapper.xml(7)mybatis-config.xml(8)pom.xml 四、程序单元测试结果五、程序完整源码获取在此之前,需要提前配置好java环境变量和maven环境变量。 (3)创建数据库执行sql 阅读详情

1 mybatis基本认识

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis 是一个支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除了几乎所有的JDBC代码和手工设置参数以及结果集的检索。

mybatis相较于jdbc的优点

把sql语句从java代码中抽取出来,方便维护。并且修改sql时不用修改java代码
不用手动设置参数和对结果集的处理-让我们操作数据库更加简单

2 初识mybatis

2.1 导包

mybatis核心包mybatis/mybatis-3.2.1.jar
mybatis的依赖包 mybatis/lib/*.jar
jdbc驱动包 mysql-connector-java-5.1.26-bin.jar

2.2 基础准备(数据库表,domain层)

创建数据库表product
创建domain类Product

public class Product {
    private Long id;
    //品牌名称
    private String productName;
    //成本价
    private double costPrice;
    //销售价
    private double salePrice;
    //供应商
    private String supplier;
    //品牌
    private String brand;
    //折扣
    private double cutoff;
    //品牌类型
    private Long dir_id;
    get()/set()方法
}

2.3 创建配置文件

2.3.1 mybatis的核心配置 :mybatis-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:配置(xml的根)-->
<configuration>
    <!--引入jdbc.properties文件-->
    <properties resource="jdbc.properties" />
    <!--
        environments:环境(多个环境)
        default:代表多个环境中 用的哪一个环境
    -->
    <environments default="development">
        <!--
            environment:某一个环境
            id:这个环境的名称
        -->
        <environment id="development">
            <!--
                transactionManager:事务管理
                type:类型
                type=”[JDBC|MANAGED]”)
                    JDBC:简单JDBC事物
                    MANAGED:啥都不做
            -->
            <transactionManager type="JDBC"/>
            <!--
                dataSource:数据源(连接池)
                POOLED:mybatis内置的连接池
           -->
            <dataSource type="POOLED">
                <!--
                    driver:驱动
                    driver:地址
                -->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--引入写sql的xml-->
        <mapper resource="cn/itsource/dao/ProductMapper.xml"/>
    </mappers>
</configuration>
2.3.2 数据库的参数:jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis
jdbc.username=root
jdbc.password=123456
2.3.3 ProductMapper.xml
<?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:根(每个xml都得有,不用管它的含义)
    namespace:命名空间(随便取个名称)
-->
<mapper namespace="cn.itsource.dao.ProductMapper">
    <!--
        select:代表这是一个查询语句
            id:代表这个查询语句的唯一命名
                以后你要找到这条SQL: namespace+id
                例:cn.itsource.dao.ProductMapper.getOne
            parameterType:参数类型
                long -> Long  _long -> long
            resultType:返回的每一条结果的类型
                注:返回类型的全限定名
    -->
    <select id="getOne" parameterType="long" resultType="cn.itsource.domain.Product">
        select * from product where id = #{id}
    </select>
</mapper>

2.4 完成测试

  1. 搞到配置文件 mybatis-config.xml
  2. 拿到核心对象 SqlSession
  3. SqlSession就可以CRUD
public class MyBatisTest {
    /**
     * 1、搞到配置文件 mybatis-config.xml
     * 2、拿到核心对象 SqlSession
     * 3、SqlSession就可以CRUD
     */
    //查询单条数据
    @Test
    public void testHello()throws Exception{
        //1、搞到配置文件 mybatis-config.xml
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        //2、获取 SqlSessionFactory 对象
        //SqlSessionFactoryBuilder --> SqlSessionFactory -> SqlSession
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(reader);
        //拿到核心对象 SqlSession
        SqlSession session = factory.openSession();

        //3、获取到一个对象
        Product product = session.selectOne("cn.itsource.dao.ProductMapper.getOne", 1L);
        System.out.println(product);

        //关闭session
        session.close();
    }
}

3 抽取工具类&CRUD

  1. SqlSessionFactoryBuilder:只用于创建factory,用完就可以扔掉
  2. SqlSessionFactory:重级量对象,创建后不要随便销毁(一个项目一个这个对象即可)
  3. SqlSession :用于完成咱们的CRUD

3.1 MyBatisUtil类

/**
 * MyBatis的工具类
 */
public class MyBatisUtil {
    //定义一个SqlSessionFactory对象
    private static SqlSessionFactory factory = null;

    static {
        try {
            factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static SqlSession openSession(){
        return factory.openSession();
    }
}

3.2 完成CRUD

3.2.1 productMapper.xml配置sql
<?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">
<!--namespace:命名空间-->
<mapper namespace="cn.itsource.dao.ProductMapper">
    <!--
        select:代表这是一个查询语句
        id:代表这个查询语句的唯一命名
            (以后要找到这条sql:通过namespace + id)
            例:cn.itsource.dao.ProductMapper.getOne
        parameterType:参数类型
             long -> Long   _long -> long
        resultType:返回的每一条结果的类型
            注:返回类型的全限定名
    -->
    <select id="getOne" parameterType="long" resultType="product">
        select *
        from product
        where id = #{id}
    </select>
    <!--
        #和$的区别:
            获取值的区别
                $: 拿到的是传过来的对象的某一个属性
                #:既可以单独那对象,还可以拿传过来的对象的某一个属性
            对SQL的影响
                #是预编译的方案(防sql注入,安全性更高,性能也会更强一些)
            结论:
                能使用#就使用#(优先使用#)
    -->
    <select id="queryOne" parameterType="productQuery" resultType="product">
        select *
        from product
        where id = ${id}
    </select>

    <select id="getAll" resultType="product">
        select *
        from product
    </select>

    <delete id="delete" parameterType="long">
        delete
        from product
        where id = #{id}
    </delete>

    <!--
        useGeneratedKeys="true"  是否要主键
        keyColumn="id"  在数据库中叫什么名字
        keyProperty="id" 在类中叫什么名字
    -->
    <insert id="save" parameterType="product" useGeneratedKeys="true" keyColumn="id"
            keyProperty="id">
        insert into product (productName, costPrice, salePrice, supplier, brand, cutoff, dir_id) VALUE (#{productName},
                                                                                                        #{costPrice},
                                                                                                        #{salePrice},
                                                                                                        #{supplier},
                                                                                                        #{brand},
                                                                                                        #{cutoff},
                                                                                                        #{dir_id})
    </insert>

    <update id="update" parameterType="product">
        update product
        set productName=#{productName},
            costPrice=#{costPrice},
            salePrice=#{salePrice},
            supplier=#{supplier},
            brand=#{brand},
            cutoff=#{cutoff},
            dir_id=#{dir_id}
        where id = #{id}
    </update>
</mapper>
3.2.2 ProductDaoImpl实现层完成相应功能
package cn.itsource.dao.impl;
import cn.itsource.dao.IProductDao;
import cn.itsource.domain.Product;
import cn.itsource.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import java.util.List;

public class ProductDaoImpl implements IProductDao {
    private final String NAMESOACE = "cn.itsource.dao.ProductMapper.";

    //添加
    @Override
    public void save(Product product) {
        SqlSession session = null;
        try {
            session = MyBatisUtil.openSession();
            session.insert(NAMESOACE+"save",product);
            //提交事物
            session.commit();
        }catch (Exception e){
            //回滚事物
            session.rollback();
            e.printStackTrace();
        }finally {
            session.close();
        }
    }

    //修改
    @Override
    public void update(Product product) {
        SqlSession session = null;
        try {
            session = MyBatisUtil.openSession();
            session.update(NAMESOACE+"update",product);
            //提交事物
            session.commit();
        }catch (Exception e){
            //回滚事物
            session.rollback();
            e.printStackTrace();
        }finally {
            session.close();
        }
    }

    //删除
    @Override
    public void delete(Long id) {
        SqlSession session = null;
        try {
            session = MyBatisUtil.openSession();
            session.delete(NAMESOACE+"delete",id);
            //提交事物
            session.commit();
        }catch (Exception e){
            //回滚事物
            session.rollback();
            e.printStackTrace();
        }finally {
            session.close();
        }
    }

    //查询单条数据
    @Override
    public Product findOne(Long id) {
        SqlSession session = null;
        try {
            session = MyBatisUtil.openSession();
            return session.selectOne(NAMESOACE+"getOne", id);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;
    }

    //查询所有数据
    @Override
    public List<Product> findAll() {
        SqlSession session = null;
        try {
            session = MyBatisUtil.openSession();
            return session.selectList(NAMESOACE+"getAll");
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;
    }
}

4 mybatis细节

4.1 添加的对象的时候返回id

<!--
        useGeneratedKeys="true"  是否要主键
        keyColumn="id"  在数据库中叫什么名字
        keyProperty="id" 在类中叫什么名字
    -->
<insert id="save" parameterType="product" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  insert into product
  (productName,dir_id,salePrice,supplier,brand,cutoff,costPrice) values  
  (#{productName},#{dir_id},#{salePrice},#{supplier},#{brand},#{cutoff},#{costPrice})
</insert>

4.2 自定义别名配置

  1. 内置别名(int,long,…)/自定义别名(自己的类)
  2. 别名不区分大小写
  3. 自定义别名的配置
  4. 每个对象单独配置别名 <typeAlias type="cn.itsource.domain.Product" alias="Product" />
  5. 扫描包(这个包的对象都会取别名) <package name="cn.itsource.domain" />
<!--
       定义别名
       typeAliases:配置别名
       type:类型
       alias:别名
   -->
<typeAliases>
    <!--<typeAlias type="cn.itsource.domain.Product" alias="product" />-->
    <!--为这个包下面所有的类都取别名-->
    <package name="cn.itsource.domain" />
    <package name="cn.itsource.query" />
</typeAliases>

4.3 日志的处理

在资源根目录创建一个log4j.properties

# ERROR错误的日志 WARN:警告 INFO:普通信息  DEBUG:调试日志  TRACE:日志
log4j.rootLogger=ERROR, stdout
#log4j.rootLogger=NONE
#把左边包名改成你自己的包名
log4j.logger.cn.itsource=TRACE
# 日志打印到控制台中
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# 日志打印的一种格式(可以灵活地指定布局模式)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# 日志打印的格式是什么样子的  %d:日期 %p:优先级 %c:类的全名  %m:输出的结果 %n:换行
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

4.4 #与$的区别

#和$的区别:
获取值的区别
$: 拿到的是传过来的对象的某一个属性
#:既可以单独那对象,还可以拿传过来的对象的某一个属性
对SQL的影响
#是预编译的方案(防sql注入,安全性更高,性能也会更强一些)
结论:
能使用#就使用#(优先使用#)

5 批量操作&动态修改

5.1 批量添加

sql: insert into 表名 (列名,列名) values (?,?),(?,?),...
xml配置

<!--
    foreach:循环
     collection:遍历的集合
     item:每次遍历拿到的对象
     separator:分隔符(每个值都使用,隔开)
-->
<insert id="batchSave" parameterType="list">
    insert into employee (name, age, sex) values
    <foreach collection="list" item="e" separator=",">
        (#{e.name}, #{e.age}, #{e.sex})
    </foreach>
</insert>

代码实现

//批量添加
@Test
public void testBatchSave()throws Exception{
    List<Employee> list = new ArrayList<>();
    for (int i = 1; i <= 20 ; i++) {
        Employee employee = new Employee();
        employee.setName("皮皮虾"+i);
        employee.setAge(18+i);
        employee.setSex(true);
        list.add(employee);
    }
    SqlSession session = MyBatisUtil.openSession();
    session.insert("cn.itsource.dao.EmployeeMapper.batchSave",list);
    session.commit();
    session.close();
}

5.2 批量删除

xml配置

<!--
     foreach:循环
     collection:遍历的集合
     item:每次遍历拿到的对象
     separator:分隔符(每个值都使用,隔开)
     open:以什么开头
     close:以什么结尾
     index:遍历的索引
-->
<delete id="batchDelete" parameterType="list">
    delete from employee where id in
    <foreach collection="list" item="id" separator="," open="(" close=")">
        #{id}
    </foreach>
</delete>

代码实现

//批量删除
@Test
public void testBatchDelete()throws Exception{
    List<Long> ids = Arrays.asList(12L,14L);
    SqlSession session = MyBatisUtil.openSession();
    session.delete("cn.itsource.dao.EmployeeMapper.batchDelete",ids);
    session.commit();
    session.close();
}

5.3 动态修改

  1. 解决以前数据丢失问题
  2. 对象中没有值就不做修改
    xml配置
<!--动态修改 只改有值的数据-->
<update id="dynamicUpdate" parameterType="employee">
    update employee
    <set>
        <if test="name !=null">
            name=#{name},
        </if>
        <if test="age !=null">
            age=#{age},
        </if>
        <if test="sex !=null">
            sex=#{sex},
        </if>
    </set>
    where id = #{id}
</update>

代码实现

//动态修改
@Test
public void testDynamicUpdate()throws Exception{
    Employee employee = new Employee();
    employee.setId(5L);
    employee.setName("皮皮怪啊啊啊啊啊");
    employee.setSex(false);
    SqlSession session = MyBatisUtil.openSession();
    session.delete("cn.itsource.dao.EmployeeMapper.dynamicUpdate",employee);
    session.commit();
    session.close();
}
Zynq-PS-SDK(12) 之 VDMA+VTC+AXI4S-VideoOut 视频通路硬件搭建 前面分别叙述了《Zynq-PS-SDK(9) 之 VDMA》、《Zynq-PS-SDK(10) 之 VTC》以及《Zynq-PS-SDK(11) 之 AXI4-Stream To Video Out》;搭建一个简单的视频通路(Framebuffer -> HDMI)就要用到这些个模块,总体的设计框图如下所示: 视频数据的 Framebuffer 在 DDR 中,通过 Processing System 写入进去; 数据通过高带宽的 AXI4 接口(这里用到了 HP AXI,即 64bits 带 阅读详情

相关推荐

S.BUS协议及编解码,C语言源码

1、简介 SBUS本质是一种串口通信协议,采用100K的波特率,8位数据位,两位停止位,偶效验,即8E2的串口通信。 值得注意的有三点: 1.SBUS采用负逻辑,所以无论接收还是发送都要进行硬件取反(注意,一定要硬件取反),电路如下 这是我在网上看资料时看到的电路,实际上我用的是下面这个电路 2.SBUS有两种模式, a.高速模式:每4ms发送一次 b...

qq_31232793的博客 1万+

【MyBatis】入门程序

详解编写mybatis入门程序的主要步骤,以及junit、logback和工具类 SqlSessionUtil 的封装

August_._的博客 1182

SAP CO实战:如何用KKA2/CJ88结果分析码搞定项目收入成本匹配(附真实案例)

本文深入解析了SAP CO模块中结果分析码KKA2/CJ88的核心应用,通过真实案例详细阐述了如何在成本波动剧烈的销售型项目中,运用结果分析实现收入与成本的精准匹配。文章重点拆解了不同结果分析方法的适用场景与财务影响,并提供了从配置、操作到问题排查的完整实战指南,帮助财务顾问提升项目财务管理能力。

qsc9012345的博客 606

Mybatis入门

在前面我们学习MySQL数据库时,都是利用图形化客户端工具(如:idea、datagrip),来操作数据库的。在客户端工具中,编写增删改查的SQL语句,发给MySQL数据库管理系统,由数据库管理系统执行SQL语句并返回执行结果。增删改操作:返回受影响行数查询操作:返回结果集(查询的结果)我们做为后端程序开发人员,通常会使用Java程序来完成对数据库的操作。Java程序操作数据库,现在主流的方式是:Mybatis。什么是MyBatis?MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。

qq_63763836的博客 1095

数据驱动AI落地:从业务价值到技术实践的全链路方法论

以数据驱动为核心,围绕 AI 落地全链路展开:先建全域数据体系(拉通内外部数据、治理数据质量),再将 AI 嵌入研发、制造、营销、服务等业务链路解决痛点,搭配混合算力架构保障技术落地,辅以 “小场景试错 - 复制” 战略、跨部门团队等方法论。结合美的集团数字化转型实践,最终实现 AI 对业务降本、增效、增收的价值,为企业 AI 转型提供可复用路径。

专注数据驱动领域原创分享。拆解从数据采集、建模分析到业务价值落地的全链路实践,聊决策逻辑、技术工具与场景案例。用通俗语言讲透数据如何赋能业务,与同路人共探数据价值。 1891

ISP 基础知识储备

ISP(image signal processing),图像信号处理芯片,在手机摄像头和车载摄像头等领域有着广泛应用,是图像信号处理的核心芯片。 ISP pipeline 流程图如下: 光线经过lens镜头,投射到sensor上,经过光电转换成模拟电信号,再由A/D转换成数字信号,交给ISP芯片进行一系列的处理,在LENS部分也需要进行镜头校正、颜色矫正等一些操作。 然后,得到的bayer ...

qq_39444290的博客 777

MyBatis快速入门第二讲——MyBatis的快速入门

MyBatis框架的架构MyBatis框架的架构如下图: 下面作简要概述: SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句,此文件需要在SqlMapConfig.xml中加载。 通过mybatis环境等配置信息构造SqlSessionFactory(即会

李阿昀的博客 1万+

基于C++和Basler SDK的相机开发详解

Basler相机是德国Basler公司生产的高性能工业相机,具有高分辨率、高帧率和低噪声的特点。Basler相机广泛应用于机器视觉、工业自动化、医疗影像和安防监控等领域。高分辨率和高帧率:能够捕捉清晰、细腻的图像。多种接口:支持USB、GigE、Camera Link等多种接口,方便不同应用场景的需求。丰富的配置选项:支持多种图像格式、分辨率和帧率的配置,适应不同的应用需求。本文详细介绍了如何基于C++和Basler SDK进行相机开发,涵盖了从环境搭建、相机连接、图像采集到图像处理的完整过程。

qq_38334677的博客 2095

MyBatis实战:从入门到精通,一站式学习MyBatis的最佳选择

MyBatis实战:从入门到精通,一站式学习MyBatis的最佳选择 项目介绍 MyBatis实战是一个专注于MyBatis技术学习的开源项目,旨在通过丰富的实战示例代码,帮助开发者从零开始掌握MyBatis的核心概念与高级用法。项目中的示例代码主要来源于刘增辉老师所著的《MyBatis从入门到精通》一书,经过精心整理与实践,确保每一个示例都能帮助开发者深入理解MyBatis的各个方面。 项目技术...

gitblog_00834的博客 1111

【七.三维视觉与视频分析】【1.点云处理:PointNet++/PointTransformer】

各位老铁,今天咱们要聊的可不是普通的二维图像处理,而是三维视觉领域最硬核的技术——点云处理。从最早的PointNet到如今的PointTransformer,这场技术进化堪比三维版的"像素革命"。今天咱们就深入解剖两大里程碑:PointNet++和PointTransformer,保证让你看完全文就能在点云领域横着走!想象一下,你抓了把沙子撒在空中,每粒沙子的位置都是三维坐标——这就是点云的典型形态。最后送大家一句话:点云处理就像在三维宇宙中寻找星辰的轨迹,既要望远镜的宏观视野,也要显微镜的细致入微。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 473

OpenClaw零基础教程:30分钟搭建你的第一个AI自动化助手

别再看那些满是代码、专业术语的教程了,那些都是给程序员看的。这篇教程,我把所有步骤拆到了极致,你跟着点鼠标就行,点错了都没关系,大不了重装一遍,5分钟的事。

2601_94871597的博客 96

【Mybatis】Mybatis入門

1-1什么是MyBatis a.MyBatis是对JDBC的封装 b.将SQL语句放在映射文件中(XML) c.自动将输入参数映射到SQL语句的动态参数中 d.自动将SQL语句执行的结果映射成Java对象 1-2MyBatis的应用 (0)准备工作,创建学生表,添加数据 CREATE TABLE tbl_student(id VARCHAR(32),NAME VARCHAR(32),age INT); INSERT INTO tbl_student VALUE("..

keeper42的博客 188

【AI面试】2026 AI Agent 应用开发|应届生简历模板 + 完整学习路线图(校招可直接复用)

很多同学学完 RAG、Agent 之后,不知道简历怎么写,项目写成 “调用大模型 API 实现聊天机器人”,投出去几乎没有面试。AI Agent 应用开发,本质还是软件开发岗位。简历要突出工程能力、踩坑优化、问题解决,不要只堆砌 AI 关键词。注意:本文针对【AI 应用开发 / Agent 应用工程师】本科校招;不适合大模型训练、微调算法岗。AI Agent 应用开发岗位,不是只会写提示词、调用 API 就可以拿到 offer。拥有传统软件工程基本功,同时懂大模型、RAG、Agent 工程落地的开发者。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 296

Mybatis入门及使用

MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。在上面我们提到了两个词:一个是持久层,另一个是框架。持久层:指的是就是数据访问层(dao),是用来操作数据库的。框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。

2202_75483664的博客 1971

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

mybatis入门

Mybatis入门 亿图作品思维图(本人作)

神韵 492

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mybatis的入门使用

mybatis generator的使用 准备工作: 可编辑xml文件的编辑器(懒人直接用myeclipse打开就行) mybatis generator core 包(mybatis-generator-core-1.3.2.jar) jdbc驱动包(mysql-connector-java-5.1.40-bin.jar) 一个空的src文件夹 结构如图(根目录D:/mybatis

qq499889810的博客 450

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

MyBatis详解(一):入门程序

一、对原生态jdbc程序中问题总结1.1、原始jdbc程序步骤:(1) 注册驱动JDBC类库向DriverManager注册数据库驱动·(2)建立连接(url、username、password)使用DriverManager提供的getConnection()方法连接到数据库(3)创建SQL语句,获取语句执行对象编写SQL语句,并建立SQL语句执行对象(4)执行语句执行SQL语句,并将结果集合返回到ResultSet中(5)处理结果(6)释放资源(注意关闭的顺序)

2501_90472645的博客 1848

Mybatis 配置Mybatis 二、MyBatis的入门程序

6.编写主配置文件,在resources目录下创建SqlMapConfig.xml的配置文件(其实名称可以任意),导入对应的约束,编写主配置文件。编写UserMapper.xml的配置文件,导入约束文件。引入log4j的jar包,1.2.12版本(需要引入log4j.properties的配置文件)4.编写UserMapper的接口和方法(就是咱们以前的UserDao接口)3.编写User的实现类,属性尽量使用包装类型,具体的代码如下。引入MyBatis的3.4.5的版本的坐标。

best_virtuoso的博客 1029

MyBatis框架的入门

MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。采用了ORM的思想。

qq_63964907的博客 901

MyBatis 入门

MyBatis基础

2301_80313139的博客 1395

MyBatis-什么是MyBatis?以及MyBatis的快速入门。

MyBatis-什么是MyBatis?以及MyBatis的快速入门。

m0_63949203的博客 1072

跟老杜从零学MyBatis框架【二】MyBatis入门程序

注意2:CarMapper.xml文件的名字不是固定的。可以使用其它名字。注意3:CarMapper.xml文件的位置也是随意的。这里选择放在resources根下,相当于放到了类的根路径下。注意4:将CarMapper.xml文件路径配置到mybatis-config.xml:

2301_76637874的博客 189

MyBatis快速入门

MyBatis快速入门

qq_43494013的博客 507
上一篇: Aisell智能销售项目_总结
下一篇: MyBatis增强
虞铭轩、
博客等级 码龄7年 3粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值