Mybatis 基础的基础

大家好我是橙子同学,代码圈子里的一只小蝼蚁,但是小蝼蚁也有大梦想,每每看到大佬对编程技术侃侃而谈的时候,脚底的我只配顶礼膜拜,于是橙子同学立志也要成为大佬(菜鸟变大佬属实有些异想天开),打开CSDN的瞬间小橙好像感觉自己变成了茫茫沙漠中的一粒沙,太渺小太普通太平凡啦啊啊啊啊,“要不现在转行?”“转行我能干啥?”“办公室里的端茶小妹??”漏!大漏特漏!那样的生活绝不是我的终极目标,我要成为让端茶小妹崇拜的人,于是我咬咬牙,跺跺脚,我偏要吃IT的这口饭!拿头发换我也愿意(有点上头,撤回来得及么),于是我默默潜水80多天,终于 鼓起勇气 写下了我的第一篇文章,第一次落笔不赶写太深奥的东西,学啥写啥吧,肯定有不足,轻点喷~~

目录

和它相识的原因

浅层次的了解一波这个家伙

了解之后可以入门啦

注意事项

初始心得


和它相识的原因

    橙子第一次遇见到Mybatis是在一个极其平淡无趣的夜晚,为什么会认识它呢,原因很简单:写作业,原来到了大学也要写作业,嗯~没错 是这样的,这已经不是一个秘密了。上完课的橙子兴高采烈地打开了她最喜爱的软件——IDEA,哦好吧,LOL笑了笑,但它没说话。

浅层次的了解一波这个家伙

      打开百度百科(没错,这个东西好用极了,他几乎能十分正经的解释橙子同学95%以上的陌生词汇),敲击键盘输入Mybatis,橙子的大脑预感到有一波新知识的到来,它显得有些兴奋。https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin

      原来Mybatis的曾用名是iBatis,是一款优秀的持久层框架,还是开源的,大气!支持定制化 SQL、存储过程以及高级映射。 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,橙子有一种代码量将大大减少的预感,好感度+1。  

   以前使用JDBC操作数据库时,有很多不方便的地方,首先,数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,当然啦,连接池可解决这个问题,其次sql变动需要改变java代码,在使用preparedStatement向占有位符号传参时,因为sql语句的where条件不确定,修改sql,修改java代码,重新翻译,重新打包部署,小橙为他感到心累,由此带来的就是sql语句在代码中硬编码,代码不易维护!

     Mybatis是一款ORM(O:object;R:relation;M:mappering  对象关系映射)框架——数据库框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。这其中的映射其实指的就是 java对象和关系型数据库中二维表之间的映射,把 java对象映射到数据库的表格中,使用ORM持久化的时候,可以操作Java中的对象,并完成持久化。

      “简单易学,灵活、解除sql与程序代码的耦合……” 哇 ,橙子就是喜欢简单的东西。

了解之后可以入门啦

 (1) 创建Meven项目(简简单单)

(2)导入mybatis及依赖坐标(记得刷新)

(3)创建实体类( 实体类的属性和数据库的字段保持一致 )

 (4)编写数据访问层:创建数据访问层接口类 UserDao () 

public interface UserDao {

    public List<User> findAll();

}

(5)编写核心配置文件:resources目录下创建一个配置文件 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>
    <!--配置mybatis环境-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
            <!--配置事物管理类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--引入映射文件-->
    <mappers>
        <mapper resource="com/src/dao/UserDao.xml"></mapper>
    </mappers>

</configuration>

(6)编写映射文件:在项目的 resources目录下, 创建和dao层一模一样的包结构, 创建映射配置文件 UserDao.xml ( 创建位置:必须和持久层接口在相同的包中;  名称:必须以持久层接口名称命名文件名,扩展名是.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="com.yll.dao.UserDao">
    <select id="findAll" resultType="com.yll.domain.User">
        select * from user
    </select>
</mapper>

(7)测试(在test包里创建测试类)

@Test
public void test1() throws IOException {
    //1. 读取配置文件,通过mybatis提供的Resources对象读取
    //InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
    InputStream is = MybatisTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");
    //2. 获取sqlSession工厂对象  sqlSessionFactory
    //2.1 获取SqlSessionFactory的构建者对象
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    //2.2. 获取sqlSession工厂对象
    SqlSessionFactory sf = builder.build(is);
    //3. 获取sqlSession对象
    SqlSession sqlSession = sf.openSession();
    //4. 使用SqlSession创建dao接口的代理对象
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    //5. 使用代理对象执行查询所有方法
    List<User> users = userDao.findAll();
    System.out.println(users);
    //6. 释放资源
    sqlSession.close();
    is.close();
} 

注意事项

1. mapper映射文件要和对应的dao接口类同名,且在同一路径下

2. mapper映射文件的namespace要标识到具体的dao接口类

3. mapper映射文件中的sql节点id要与dao接口类中的方法名相同

4. mapper映射文件中的sql节点要有返回值类型才能得到操作后的数据

5. 在使用IDEA工具开发时(eclipse无此问题)如果在resources中创建映射文件目录时只能一层一层的创建,不会自动生成。

心得

    最大感觉就是操作数据库方便了许多,可能这些都只是最基本的Mybatis知识,但是橙子同学也浅浅的感受到了框架的魅力,把问题划分开来各个解决,易于控制,易于延展,易于分配资源。能感觉到我学习的东西都很基础,可是这也确实是实在的收获,希望可以帮助更多还在学习基础的小可爱们,小橙也会继续努力的!

     

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值