当前位置:   article > 正文

牛客网牛客社区项目--day3 MyBatis_牛客网社区项目

牛客网社区项目

今天的内容是Mybatis

李老师讲的课基于实战,因此很多淘汰的或者繁琐的写法都留给我们课下实操。所以说,绝对是干货满满。

  1. 核心组件

  • SqlSessionFactory:用于创建SqlSession的工厂类
  • SqlSession:MyBatis的核心组件,用于向数据库执行SQL
  • 主配置文件:xml配置文件,可以对MyBatis的底层行为做出详细的配置
  • Mapper接口:就是dao接口,在MyBatis中习惯性的称之为Mapper
  • Mapper映射器:用于编写SQL,并将SQL和实体类映射的组件,采用xml、注解均可实现

在Spring Boot的环境下前三个是不用我们自己手写的,全自动。

  2. 使用MyBatis对用户表进行CRUD操作

  • 首先要先配置依赖,这里我就不
  • 接着是数据库,我用的是MySQL,图形化工具是navicat(跟老师不一样),在数据库community中创建一张user表(我做出了简化版)

                     

第三步,在application中做出配置,这里是我的配置文件,可以参考

  1. server.port=8080
  2. server.servlet.context-path=/community
  3. spring.thymeleaf.cache=false
  4. # DataSourceProperties 配置mysql数据库和连接池
  5. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  6. spring.datasource.url=jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong
  7. spring.datasource.username=root
  8. spring.datasource.password=password
  9. spring.datasource.type=com.zaxxer.hikari.HikariDataSource
  10. spring.datasource.hikari.maximum-pool-size=15
  11. spring.datasource.hikari.minimum-idle=5
  12. spring.datasource.hikari.idle-timeout=30000
  13. # MybatisProperties
  14. mybatis.mapper-locations=classpath:mapper/*.xml
  15. mybatis.type-aliases-package=com.nowcoder.community.entity
  16. mybatis.configuration.useGeneratedKeys=true
  17. mybatis.configuration.mapUnderscoreToCamelCase=true
  18. # logger
  19. logging.level.com.nowcoder.community=debug
  • 创建一个实体类(entity包)写一个User类跟数据库中user表相对应。定义各个属性的get和set方法,再加一个toString方法方便显示
  • 在dao层创建一个UserMapper接口(注意是接口而不是类),我们要写一个@Mapper接口让Spring装配这个Bean,按理说dao层我们应该用@Repository(其实也可以用)但是MyBatis有一个专门的注解@Mapper,一般习惯用这个。接着就开始定义方法了
    1. @Mapper
    2. public interface UserMapper {
    3. User selectById(int id);
    4. User selectByName(String username);
    5. int insertUser(User user);
    6. int updateStatus(int id,int status);
    7. int updatePassword(int id,String password);
    8. }

  •  在这里介绍一个插件叫MyBatisX,可以根据我们写的方法自动创建Statement
  • 具体的SQL写在xml里,在resources里创建一个mapper包,里面写具体的SQL。
    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.nowcoder.community.dao.UserMapper">
    6. <sql id="selectFields">
    7. id,username,password,status
    8. </sql>
    9. <sql id="insertFields">
    10. id,username,password,status
    11. </sql>
    12. <insert id="insertUser" keyProperty="id" parameterType="User">
    13. insert into user(<include refid="insertFields"></include>)
    14. values(#{username},#{password},#{status})
    15. </insert>
    16. <update id="updateStatus">
    17. update user set status = #{status} where id = #{id}
    18. </update>
    19. <update id="updatePassword">
    20. update user set password = #{password} where id = #{id}
    21. </update>
    22. <select id="selectById" resultType="User">
    23. select <include refid="selectFields"></include>
    24. from user
    25. where id = #{id}
    26. </select>
    27. <select id="selectByName" resultType="User">
    28. select <include refid="selectFields"></include>
    29. from user
    30. where id = #{id}
    31. </select>
    32. </mapper>

  •  之后测试运行,用@Autowired把前面定义的Bean注入到userMapper,这是一个查询方法
    1. public class MapperTests {
    2. @Autowired
    3. private UserMapper userMapper;
    4. @Test
    5. public void testSelectUser(){
    6. User user = userMapper.selectById(1);
    7. System.out.println(user);
    8. }
    9. }

    成功查询到数据,其余方法不再一一展示。建议没学过MyBatis的小伙伴先去学习一个黑马的MyBatis视频(14集)同样是干货满满。接下来就进入到了正式开发的环节 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号