Mybatis-rookie

Mybatis简介

基本内容

  • MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
  • Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

Mybatis基本配置

导包

mybatis-3.2.7.jar
mysql-connector-java-8.0.16.jar

1. 配置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>

< environments default=“development”> //default:是选中默认的数据源,选择environment 标签下的id

< environment id=“development”>
< transactionManager type=“JDBC”/>
< dataSource type=“POOLED”>
//数据源POOLED
//以下操作类似于JDBC的配置环境
< property name=“driver” value="${driver}" />

< property name=“url” value="${url}"/>

< property name=“username” value="${username}"/>

< property name=“password” value="${password}"/>

</ dataSource>
</ environment>

</ environments>
< mappers>
< mapper resource=“org/mybatis/example/BlogMapper.xml”/>
</ mappers>
</ configuration>
2. 配置mapper.xml文件
SqlSession 和 Mapper 的作用,而 SQL 语句映射 是个相当大的话题,可能会占去文档的大部分篇幅。不过为了让你能够了解个大概,这里 会给出几个例子。 在上面提到的两个例子中,一个语句应该是通过 XML 定义,而另外一个则是通过注解定 义。先看 XML 定义这个,事实上 MyBatis 提供的全部特性可以利用基于 XML 的映射语 言来实现,这使得 MyBatis 在过去的数年间得以流行。如果你以前用过 MyBatis,这个 概念应该会比较熟悉。不过 XML 映射文件已经有了很多的改进,随着文档的进行会愈发 清晰。这里给出一个基于 XML 映射语句的示例,它应该可以满足上述示例中 SqlSession 的调用。

<? 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.example.BlogMapper”>
sql语句

  < select id="selectBlog" resultType="Blog"> 
  		select * from Blog where id = #{id} 
  </ select> 

</ mapper>
3. 配置mapper接口
public interface Eployeemapper {
        List< Eployee> select();
}
4.创建测试类Test

@Test
   public void test() throws IOException {
        String resourcese= "mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession openSession = sqlSessionFactory.openSession();
        IEployee mapper=openSession.getMapper(IEployee.class); //参数是接口
        Employee e=mapper.selectone(9);
        System.out.println(e);
   }

mybatis和Hibernate的区别

  1. Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。
  2. Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。
  3. Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。
  4. 总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最。

5. mybatis-config.xml配置内容顺序

SqlMapConfig.xml中配置的内容和顺序如下:

  • properties(属性)
  • settings(全局配置参数)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
  • environment(环境子属性对象)
  • transactionManager(事务管理)
  • dataSource(数据源)
  • mappers(映射器)

6.typeAliases(类型别名)

解决mapper.xml中类型名引用过长的问题
同时注意顺序,该标签必须放在properties标签下面

  < typeAlias type="com.ali.bean.User" alias="user"/> 
  < !-- 批量别名定义,扫描整个包下的类,别名为类名,自动映射(大小写不敏感) -->
  < package name="com.ali.bean" />
</ typeAliases>

多表联查

通过resultMap的id来匹配

< resultMap id="order" type="pojo.Orders">
    < id property="id" column="id"/>
    < result property="userId" column="user_id"/>
    < result property="number" column="number"/>
    < result property="createtime" column="createtime"/>
    < association property="user" javaType="pojo.User">
        < result property="id" column="user_id"/>
        < result property="username" column="username"/>
    < /association>

< /resultMap>
< select id="selectOrders" resultMap="order">
    select o.id,
    o.user_id,
    o.number,
    o.createtime,
    u. username
    from orders o
    left join user u
    on o.user_id = u.id
< /select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值