古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

mybatis注解开发

时间: 2022-08-07   |   分类: mybatis   | 字数: 543 字 | 阅读约: 2分钟

mybatis注解开发

一、常用注解

  • @Insert
  • @Update
  • @Delete
  • @Select
  • @Result 实现结果集封装
  • @Results 可以与@Result一起使用,封装多个结果集
  • @One 实现一对一结果集封装
  • @Many 实现一对多结果集封装

二、简单增删改查

    @Insert("insert into user (username) values (#{username})")
    public void add(User user);

    @Update("update user set username = #{username} where id = #{id}")
    public void update(User user);

    @Delete("delete from user where id = #{id}")
    public void delete(Integer id);

    @Select("select * from user")
    public List<User> select();

    @Select("select * from user where id = #{id}")
    public User findById(Integer id);

三、实现复杂映射

  • @Results 代替的标签是 <resultMap>,可以使用单个@Result,或@Result集合:@Results({@Result(), @Result(), ...}) 或 @Results({@Result()})
  • @Result 代替了<id>和<result>标签
    • column: 数据库列名
    • property: 装配的属性名
    • one: 需要使用@One注解(@Result(one=@One)())
    • many: 需要使用@Many注解(@Result(many=@Many)())
  • @One 代替了<assocation>标签
  • @Many 代替了<collection>标签

1.一对一

    /**
     * @One里可以写sql,也可以引用方法
     */
    @Results({
        @Result(property = "id", column = "id"),
        @Result(property = "orderTime", column = "orderTime"),
        @Result(property = "total", column = "total"),
        @Result(property = "user", column = "uid", javaType = User.class,
            one = @One(select = "com.example.demo.mapper.AnnoUserMapper.findById"))
    })
    @Select("select * from orders")
    public List<Order> findOrderAndUser();

2.一对多

    @Select("select * from user")
    @Results({
        @Result(property = "id", column = "id"),
        @Result(property = "username", column = "username"),
        @Result(property = "orderList", column = "id", javaType = List.class,
            many = @Many(select = "com.example.demo.mapper.AnnoOrderMapper.findOrderByUid"))
    })
    public List<User> findAll();

3.多对多

类似一对多

阅读全文 »

mybatis复杂映射

时间: 2022-08-06   |   分类: mybatis   | 字数: 363 字 | 阅读约: 1分钟

mybatis复杂映射

一、一对一

<mapper namespace="com.example.demo.mapper.OrderMapper">

    <resultMap id="orderMap" type="com.example.demo.pojo.Order">
        <result property="id" column="id"></result>
        <result property="orderTime" column="orderTime"></result>
        <result property="total" column="total"></result>

        <association property="user" javaType="com.example.demo.pojo.User">
            <result property="id" column="uid"></result>
            <result property="username" column="username"></result>
        </association>
    </resultMap>


    <!--resultMap:手动来配置实体属性与表字段的映射关系-->
    <select id="findAll" resultMap="orderMap">
        select *
        from orders o,
             user u
        where o.uid = u.id
    </select>


</mapper>

二、一对多

<mapper namespace="com.example.demo.mapper.UserMapper">

    <resultMap id="userMap" type="com.example.demo.pojo.User">
        <result property="id" column="id"></result>
        <result property="username" column="username"></result>
        <result property="password" column="password"></result>
        <result property="birthday" column="birthday"></result>

        <collection property="orderList" ofType="com.example.demo.pojo.Order">
            <result property="id" column="oid"></result>
            <result property="orderTime" column="orderTime"></result>
            <result property="total" column="total"></result>
        </collection>
    </resultMap>


    <!--resultMap:手动来配置实体属性与表字段的映射关系-->
    <select id="findAll" resultMap="userMap">
        select *, o.id oid
        from user u
                 left join orders o on u.id = o.uid
    </select>


</mapper>

延迟加载: fetchType=“lazy”,assoication、collection可配置该属性,当使用到子属性时才去查询
也可全局配置: xml <settings> <!--开启全局延迟加载功能--> <setting name="lazyLoadingEnabled" value="true"/> </settings>

阅读全文 »

mybatis配置文件深入

时间: 2022-08-05   |   分类: mybatis   | 字数: 885 字 | 阅读约: 2分钟

配置文件深入

一、核心配置文件

1. 层级关系

  • configuration
    • properties 属性
    • settings 设置
    • typeAliases 类型别名
    • typeHandlers 类型处理器
    • objectFactory 对象工厂
    • plugins 插件
    • environments 环境
      • environment 环境变量
        • transactionManager 事务管理器
        • dataSource 数据源
    • databaseIdProvider 数据库厂商标识
    • mappers 映射器

2. 常用配置

  • environments environment.png

    transactionManager 有两种

阅读全文 »

mybatis基本应用

时间: 2022-08-04   |   分类: mybatis   | 字数: 1567 字 | 阅读约: 4分钟

基本应用

一、开发步骤

  1. 添加MyBatis的坐标
    <!--mybatis坐标-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>

    <!--mysql驱动坐标-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
        <scope>runtime</scope>
    </dependency>
    <!--单元测试坐标-->
  1. 创建**数据表
  2. 编写**实体类
  3. 编写映射文件**Mapper.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="**Mapper">
        <select id="findAll" resultType="com.***">
            select * from User
        </select>
    </mapper>
  1. 编写核心文件SqlMapConfig.xml
    <!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.jdbc.Driver"/>
                        <property name="url" value="jdbc:mysql:///test"/>
                        <property name="username" value="root"/>
                        <property name="password" value="root"/>
                    </dataSource>
                </environment>
            </environments>
            <mappers>
                <mapper resource="com/**/**Mapper.xml"/>
            </mappers>
        </configuration>
  1. 编写测试类
    //加载核心配置文件
    InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
    //获得sqlSession工厂对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    //获得sqlSession对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //执行sql语句
    List<User> userList = sqlSession.selectList("userMapper.findAll");
    //打印结果
    System.out.println(userList);
    //释放资源
    sqlSession.close();

二、配置文件

映射文件概述

mapper.png

阅读全文 »

mybatis相关概念

时间: 2022-08-03   |   分类: mybatis   | 字数: 873 字 | 阅读约: 2分钟

相关概念

一、orm 对象/关系数据库映射

ORM全称Object/Relation Mapping:表示对象-关系映射的缩写 ORM完成面向对象的编程语言到关系数据库的映射。当ORM框架完成映射后,程序员既可以利用面向 对象程序设计语言的简单易用性,又可以利用关系数据库的技术优势。ORM把关系数据库包装成面向对 象的模型。ORM框架是面向对象设计语言与关系数据库发展不同步时的中间解决方案。采用ORM框架 后,应用程序不再直接访问底层数据库,而是以面向对象的放松来操作持久化对象,而ORM框架则将这 些面向对象的操作转换成底层SQL操作。ORM框架实现的效果:把对持久化对象的保存、修改、删除 等操作,转换为对数据库的操作

阅读全文 »
34 35 36 37 38 39 40 41 42
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
© 2019 - 2024 京ICP备19012088号-1
0%