mybatis示例

这篇博客主要讨论了在使用Mybatis时,如果在mapper.xml映射文件中添加注释可能会导致错误的情况。博主详细介绍了从实体类、DAO接口到接口映射xml文件的配置,并通过三个部分展示了问题的出现及可能的解决方案。
摘要由CSDN通过智能技术生成

mybatis示例

在mapper.xml映射文件中使用注释会报错。

实体类

import lombok.Data;
import lombok.ToString;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;

/**
 * Created by admin on 2018/2/7.
 */
@Data
@ToString
@Entity
@Table(name="category")
@GenericGenerator(name = "jpa-assigned", strategy = "assigned")
//@GenericGenerator(name = "jpa-uuid", strategy = "uuid")
public class Category implements Serializable {
   
    private static final long serialVersionUID = -906357110051689484L;
    @Id
    @GeneratedValue(generator = "jpa-assigned")
    @Column(length = 32)
    private String id;
    private String name;
    private String label;
    private String parentid;
    private String isshow;
    private Integer orderby;
    private String isleaf;

}

import com.xuecheng.framework.domain.course.Category;
import lombok.Data;
import lombok.ToString;

import java.util.List;

/**
 * Created by admin on 2018/2/7.
 */
@Data
@ToString
public class CategoryNode extends Category {
   

    List<CategoryNode> children;

}

DAO接口

import com.xuecheng.framework.domain.course.ext.CategoryNode;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface CategoryMapper {

    //查询分类
    public CategoryNode selectList();

}

接口映射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.xue.manage_course.dao.CategoryMapper">

    <resultMap id="categoryMap" type="com.xue.framework.domain.course.ext.CategoryNode">
        <id property="id" column="one_id"/>
        <result property="name" column="one_name"/>
        <result property="label" column="one_label"/>
        <result property="isshow" column="one_isshow"/>
        <result property="isleaf" column="one_isleaf"/>
        <result property="orderby" column=
Spring MVC 整合 MyBatis示例通常涉及以下几个步骤: 1. 添加依赖:在你的 Maven 或者 Gradle 项目中添加 Spring Web 和 MyBatis 的依赖。 ```xml <!-- Maven 示例 --> <dependency> <groupId>org.mybatis.spring</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.5.6</version> </dependency> <!-- Gradle 示例 --> implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.5.6' ``` 2. 配置数据源:Spring Boot 自带了对数据源的支持,如果使用 JPA,你需要配置 DataSource。对于 MyBatis,不需要额外的配置。 3. 创建 Mapper 接口:定义 SQL 查询操作的接口,并通过 `@Mapper` 注解标记。 ```java import org.apache.ibatis.annotations.Select; public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUser(int id); } ``` 4. 映射 XML 文件:编写 XML 映射文件,将 Mapper 接口的方法映射到具体的 SQL 语句。 ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="getUser" resultType="com.example.demo.entity.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper> ``` 5. 配置 SqlSessionFactory:在 Spring 容器启动时注入到应用中。 ```java @Configuration public class MyBatisConfig { @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { // 使用 MyBatis Builder API 或者 SqlSessionFactoryBuilder 构建工厂 SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource); return factoryBean.getObject(); } } ``` 6. 创建 Service 类:注入 SqlSession 对象,利用它来执行 SQL 查询并处理结果。 ```java @Service public class UserService { private final SqlSessionFactory sqlSessionFactory; @Autowired public UserService(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } public User getUser(int id) { try (SqlSession sqlSession = sqlSessionFactory.openSession()) { return sqlSession.selectOne("UserMapper.getUser", id); } catch (Exception e) { throw new RuntimeException(e); } } } ``` 7. 在 Controller 中调用服务:创建 RESTful 控制器来访问 Service 并返回结果。 ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUser(@PathVariable int id) { User user = userService.getUser(id); // 返回响应 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值