springboot tips(3)

### 1. 在SpringBoot框架集成MyBatis,使用MyBatis框架操作数据。

使用步骤:

  1. 添加mybatis起步依赖:完成mybatis对象自动配置,将对象放在容器中

  2. pom.xml中指定把src/main/java目录中的xml文件包含到classpath中

  3. 创建实体类User

  4. 创建mapper接口UserMapper,创建操作用户的方法

  5. 创建mapper接口对应的Mapper文件,就是写sql语句的xml文件

  6. 创建Service层对象,创建UserService接口和它的实现类。去调用mapper接口对象的方法,完成数据库的操作。

  7. 创建Controller层对象,调用Service层。

  8. 写application.properties文件,配置数据库的连接信息。

@Mapper:放在mapper接口的上面,每个接口都要使用这个注解

@Mapper
@Repository
public interface UserMapper {
    List<User> findAll();
}

UserMapper.xml:

<mapper namespace="com.cn.wanxi.mapper.UserMapper">
    <select id="findAll" resultType="com.cn.wanxi.model.User">
        select * from user
    </select>
</mapper>

application.properties配置文件:

server.port=8086
#连接数据库
#连接数据库的驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/medicaluseUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root

service的实现类:UserServiceImpl.java:

@Service("UserService")
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    @Override
    public ResultModel findAll() {
        List<User> list = userMapper.findAll();
        return ResultModel.getResultModel(list);
    }
}

UserController.java:

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/findAll")
    public ResultModel findAll(){
        ResultModel resultModel = userService.findAll();
        return resultModel;
    }
}

### 2. springboot JPA

在pom.xml中导入依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Customer实体类:

@Entity
@Table(name = "customer")
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "phone")
    private String phone;

    @Column(name = "level")
    private String level;

    @Column(name = "address")
    private String address;

    // 一个客户包含多个联系人
//    配置Customer为1对多,关系由LinkMan方维护(多方维护)
    //  mappedBy 里的名字就是LinkMan里Customer的变量名customer
//cascade=cascade.Remove :级联删除
    @OneToMany(mappedBy = "customer",fetch = FetchType.EAGER,cascade = {CascadeType.REMOVE})
    Set<Linkman> linkmanSet;

Linkman实体类:

@Entity
@Table(name = "link_man")
public class Linkman {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;
    @Column(name = "phone")
    private String phone;
    @Column(name = "position")
    private String position;
    // 多对一,targeEntity表示1的一方是谁
    @ManyToOne(targetEntity = Customer.class)
    // JoinColumn表示主外键。name:外键,referencedColumnName:外键对应的主键
    @JoinColumn(name = "customer_id",referencedColumnName = "id")
    private Customer customer;

客户测试类CustomerRepositoryTest.java:

@SpringBootTest
class CustomerRepositoryTest {
    @Autowired
    CustomerRepository customerRepository;

    @Test
    public void add_customer_success(){
        Customer customer = new Customer();
        customer.setName("wangwei");
        customer.setAddress("chengdu");
        customer.setLevel("middle");
        customer.setPhone("19839278456");
        customerRepository.save(customer);
        System.out.println(customer);
    }

在执行该测试类时:

 报错原因:这是因为在添加的客户信息中出现中文。而问题可能有3个:

1.首先查看数据库的字符集是否是utf8

2.查看表中字段的字符集是否是utf8

3.查看项目配置文件连接数据库的URL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值