Mybatis框架实现CRUD操作

Mybatis框架实现CRUD操作

自定义mybatis流程

自定义MyBatis流程

mybatis基于代理dao的CRUD操作(重点)
  • E:\JAVAworkspace\mybatis_CRUD
CRUD中可能遇到的问题:参数的传递及返回值的封装
  • parameterType(输入类型):

    • 传递简单类型

    • 传递pojo对象:mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。

      OGNL表达式:Object Graphic Navigation Language

      ​ 对象 图 导航 语言

      它是通过对象的取值方法来获取数据。在写法上把get给省略了,比如我们获取用户的名称:

      类中的写法:user.getUsername()

      OGNL的写法:user.username

      mybatis 中为什么能直接写username,而不用user.原因是在parameterType中已经提供了属性所属的类,所以此时不需要写对象名。

    • 传递pojo包装对象:当查询条件是综合的查询条件,不仅包括用户查询条件还包括其他的查询条件时(例如用户购买商品的信息),可以使用包装对象传递输入参数。

  • resultType(输出类型)

    • resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。
    • 如果sql查询字段名和pojo属性名不一致,可以对SQL列名起别名,也可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到pojo对象中。
    <!--起别名:执行效率较高-->
    SELECT id AS userId,username as userName,address AS userAddress,sex AS userSex, birthday AS userBirthday FROM USER 
    
    <!--resultMap:开发效率较高-->
    <!--配置 查询结果的列名和实体类的属性名的对应关系-->
        <resultMap id="userMap" type="com.ssm.domain.User">
            <!--主键字段的对应-->
            <id property="userId" column="id"></id>
            <!--非主键字段的对应-->
            <result property="userName" column="username"></result>
            <result property="userAddress" column="address"></result>
            <result property="userSex" column="sex"></result>
            <result property="userBirthday" column="birthday"></result>
        </resultMap>
        <!--查询所有-->
        <select id="findAll" resultMap="userMap">
            SELECT * FROM USER
        </select>
    
    • resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询
介绍mybatis传统dao方式的使用(自己编写dao的实现类)
  • E:\JAVAworkspace\mybatis_CRUD_dao
mybatis主配置文件中的常用配置
  • properties标签:可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息

    • resource属性:常用的,用于指定配置文件的位置,是按照路径的写法来写,并且必须存在于类路径下
    <properties resource="jdbcConfig.properties"></properties>
    
    • url属性:是要求按照url的写法来写地址
      • URL:Uniform Resource Locator 统一资源定位符,可以标识唯一的一个资源的位置
      • 它的写法: http://location:8080/mybatisserver/demo1Servlet
        协议 主机 端口 URI
    <properties url = "file:///E:/JAVAworkspace/mybatis_CRUD/src/main/resources/jdbcConfig.properties">
    </properties>
    
  • typeAliases标签:使用typeAliases配置别名,他只能配置domain类中的别名

    • typeAlias用于配置别名,type属性指定实体类全限定类名,alias属性指定别名,当指定了别名就不再区分大小写
    <typeAlias type="com.ssm.domain.User" alias="user"></typeAlias>
    
    • package用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写
    <package name="com.ssm.domain"></package>
    
    • 解释Integer、int、java.lang.Integer的写法
  • mappers标签的子标签:

    • package标签用于指定dao接口所在的包,当指定了之后就不需要再写mapper以及resource(xml解析)或者calss(注解)了
    <package name="com.ssm.dao"></package>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个开源的持久层框架,它可以帮助我们简化数据库操作的代码。下面是使用MyBatis实现CRUD的步骤: 1. 创建Maven项目,并添加MyBatis依赖。 2. 创建数据库表,并在数据库中插入一些测试数据。 3. 创建实体类,用于映射数据库表的字段。 4. 创建Mapper接口,定义数据库操作的方法。 5. 创建Mapper映射文件,配置SQL语句和参数映射。 6. 在配置文件中配置数据源和MyBatis的相关配置。 7. 编写测试类,调用Mapper接口中的方法进行数据库操作。 下面是一个使用Mapper映射文件实现增删改查的示例: 1. 创建Mapper接口: ```java public interface StudentMapper { // 根据学生id查询学生信息 Student getStudentById(int id); // 添加学生信息 void addStudent(Student student); // 更新学生信息 void updateStudent(Student student); // 根据学生id删除学生信息 void deleteStudent(int id); } ``` 2. 创建Mapper映射文件(studentMapper.xml): ```xml <mapper namespace="com.example.mapper.StudentMapper"> <!-- 根据学生id查询学生信息 --> <select id="getStudentById" resultType="com.example.entity.Student"> SELECT * FROM student WHERE id = #{id} </select> <!-- 添加学生信息 --> <insert id="addStudent"> INSERT INTO student(name, age) VALUES(#{name}, #{age}) </insert> <!-- 更新学生信息 --> <update id="updateStudent"> UPDATE student SET name = #{name}, age = #{age} WHERE id = #{id} </update> <!-- 根据学生id删除学生信息 --> <delete id="deleteStudent"> DELETE FROM student WHERE id = #{id} </delete> </mapper> ``` 3. 在配置文件中配置Mapper映射文件的路径: ```xml <configuration> <mappers> <mapper resource="com/example/mapper/studentMapper.xml"/> </mappers> </configuration> ``` 4. 编写测试类: ```java public class MyBatisTest { public static void main(String[] args) { // 创建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); // 创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); // 获取Mapper接口的实例 StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class); // 调用Mapper接口中的方法进行数据库操作 Student student = studentMapper.getStudentById(1); System.out.println(student); student.setName("Tom"); student.setAge(20); studentMapper.updateStudent(student); studentMapper.deleteStudent(2); sqlSession.commit(); sqlSession.close(); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值