【MyBatis学习笔记】1. 第一个MyBatis程序


MyBatis介绍

MyBatis是什么?

MyBatis是一个框架, 对JDBC的基础功能进行了封装. 是Java技术栈里面ORM框架中使用最广泛的一类框架.

为什么要学习MyBatis?

用JDBC操作数据, 步骤繁琐, 代码量大. 业务逻辑越复杂就越繁琐, 不好管理, 一不注意, 就会出现各种bug和异常. 每个人的代码风格不一样, 不利于团队协作

使用MyBatis有哪些好处?
  • 操作简单
  • 稳定,安全,不易出错
  • 统一的开发风格和标准, 利于团队协作
  • 让开发人员更容易关注业务, 而不需要关注JDBC的各种细节
  • 极大的提高开发效率
技术地位

你只要是在做Java后端方面的工作, 没有不要求会MyBatis的. 这是基本技能, 地位已不可撼动.

如何学习MyBatis

  1. 第一个MyBatis程序
    这里学会使用这个框架的一些准备工作, 包括环境, 初始化, 基本配置等.

  2. 然后学习怎么样利用MyBatis进行基本的增删改查

  3. 最后学习一些复杂的操作和MyBatis提供的一些特性
    缓存, 防注入, 事务处理, 错误处理, 日志等

  4. MyBatis提供了注解的方式来方便快速开发,学习各种注解的使用

第一个MyBatis程序

  1. Maven依赖
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
</dependencies>
  1. Mybatis配置文件
<?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>
    <!--可指定使用那一个数据库配置-->
    <enviroments default="dev">
        <environment id="dev">
            <!-- 采用JDBC方式对数据库事物进行commit/rollback -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 采用连接池方式管理数据库连接 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true$amp;characterEncoding=UTF-8"/>
                 <property name="username" value="root"/>
                  <property name="password" value="root"/>
            </dataSource>
        </environment>
        <environment id="prd">
            <!-- 采用JDBC方式对数据库事物进行commit/rollback -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 采用连接池方式管理数据库连接 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true$amp;characterEncoding=UTF-8"/>
                 <property name="username" value="root"/>
                  <property name="password" value="root"/>
            </dataSource>
        </environment>
    </enviroments>
</configuration>
  1. 初始化Mybatis
//利用Reader加载classpath下的mybatis-config.xml核心配置文件
Reader reader=Resources.getResourceAsReader("mybatis-config.xml");
//初始化SqlSessionFactory对象,同时解析mybatis-config.xml文件
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder(reader);
SqlSession sqlSession=null;
try{
    //创建SqlSession对象, SqlSession是JDBC的扩展类, 用于与数据库交互
    sqlSession = sqlSessionFactory.openSession();
    Connection connection =sqlSession.getConnection();
}catch(Exception e){
    e.printStackTrace();
}finally{
    if(sqlSession!=null){
        //如果type="POOLED",代表使用连接池,close则是将连接回收到连接池中
        //如果type="UNPOOLED",代表直连,close则会调用Connection.close()方法关闭连接
        sqlSession.close();
    }
}
  1. 封装一个MyBatisUtils类
public class MyBatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;
    static {
        try{
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);    
        }catch(IOException e){
            e.printStackTrace();
            throw new ExceptionInitializerError(e);
        }
    }
    
    public static SqlSession openSession(){
        return sqlSessionFactory.openSession();
    }
    
    public static void closeSession(SqlSession session){
        if(session!=null){
            session.close();
        }
    }
}
  1. 使用Mybatisutils获取SqlSession
SqlSession sqlSession = null ;
try{
    sqlSession = MyBatisutils.openSession();
    Connection connection = sqlSession.getConnection();
    System.out.println(connection);
}catch(Exception e){
    throw e;
}finally{
    MyBatisUtils.closeSession(sqlSession);
}
写一个简单的查询
  1. 新建Mapper文件 在Resources/mappers/下创建goods.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 namespace="goods">
    <select id="selectAll" resultType="com.mybatis.entity.Goods">
        select * from t_goods order by goods_id desc limit 10;
    </select>
</mapper>
  1. 在Resources/mybatis-config.xml中的configuration的节点下导入mapper
<mappers>
    <mapper resource="mappers/goods.xml"/>
</mappers>
  1. 创建实体类(Entity)
public class Goods {
    private Integer goodsId;
    private String title;
    private String subTitle;
    private Float originalCost;
    private Float currentPrice;
    private Float discount;
    private Integer isFreeDelivery;
    private Integer categoryId;
    ... setter getter
}
  1. 驼峰命名
    在mybatis-config.xml中configuration下加入
<settings>
    <!-- 驼峰命名 用变量goodId接收good_id字段 -->
    <setting name="mapUnderscoreToCameCase" value="true"/>
</settings>
  1. 在代码中使用
SqlSession session=null;
try{
    session=MyBatisUtils.openSession();
    //selectAll在所有文件内唯一,可省略goods
    List<Goods> list=session.selectList("goods.selectAll");
}catch(Exception e){
    throw e;
}finally{
    MyBatisUtils.closeSession(session);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值