• Spring boot MyBatis基本操作


    XML 配置方式

    目录结构

    数据库信息:

    数据库student -> 表名 custom_user  -> 主键-> custom_id ,其他字段 cusotm_name,custom_age 

    1.加入依赖

     <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.1</version>
    </dependency> 
    

    pom.xml如下

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.5.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.guoxw</groupId>
        <artifactId>mybatis_test</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>mybatis_test</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.1</version>
            </dependency>
    
    
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    2.mybatis-config.xml (暂时没有配置具体信息)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
    
    </configuration>
    

    3. mapper/custom_user.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.guoxw.mybatis_test.mapper.CustomUserMapper">
    
        <select id="findById" parameterType="Integer" resultType="com.guoxw.mybatis_test.entity.CustomUser">
        select * from custom_user where custom_id =#{ value }
        </select>
    
    
    
        <!-- 如果这里没有传入参数,不需要定义parameter ,如果是查询涉及多表,返回类型可以直接使用map 键值对-->
        <!--  使用LinkedHashMap 可以将map中的数据按照插入顺序进行排序 -->
        <!--  #{custom_id}   传入参数,custom_id 是和map的key值对应-->
        <!-- 可以加入if 语句 -->
        <select id="findAll"  parameterType="java.util.Map" resultType="java.util.Map">
    
            select * from  custom_user where custom_id > #{custom_id}
            <if test="custom_age !=null">
            and  custom_age > #{custom_age}
            </if>
            <!-- select *  from custom_user1 p ,custom_user2 d where p.nage=d.name -->
    
        </select>
    
    
        <insert id="create" parameterType="com.guoxw.mybatis_test.entity.CustomUser">
    
        insert into   custom_user ( custom_name,custom_age)
        values (#{custom_name},#{custom_age})
        <!-- selectKEY 用于回填数据 keyProperty 主键  keycolume是字段名  resultType 是字段类型 order 是指定在执行sql前或后返回数据-->
        <selectKey keyProperty="custom_id" keyColumn="custom_id" resultType="Integer" order="AFTER">
            select Last_INSERT_ID()
        </selectKey>
    
        </insert>
    
        <update id="update" parameterType="com.guoxw.mybatis_test.entity.CustomUser">
    
        update  custom_user set custom_age = #{custom_age} where custom_id=2
    
        </update>
    
        <delete id="del" parameterType="Integer">
            delete from custom_user where custom_id=#{custom_id}
        </delete>
    </mapper>
    

    4.CustomUserMapper

    public interface CustomUserMapper {
    
        public CustomUser findById(Integer id);
    
        public List<Map> findAll(Map params);
    
    
        public void create(CustomUser user);
    
    
        public void update(CustomUser user);
    
        public void del(Integer custom_id);
    
    }
    

    5.CustomUserService

    @Service
    public class CustomUserService {
    
        @Resource
        private CustomUserMapper customUserMapper;
    
        public CustomUser findById(Integer id){
    
            return customUserMapper.findById(id);
    
        }
    
    
        /***
         *
         * @return
         */
        public List<Map> findAll(Integer id,Integer age){
            Map params=new HashMap();
            params.put("custom_id",id);
            params.put("custom_age",age);
            return  customUserMapper.findAll(params);
        }
    
    
        @Transactional
        public void create(CustomUser user){
    
            customUserMapper.create(user);
    
        }
    
        @Transactional
        public void update(CustomUser user){
    
            customUserMapper.update(user);
    
        }
    
        @Transactional
        public void del(Integer custom_id){
    
            customUserMapper.del(custom_id);
    
        }
    
    
    }
    

    6. entity/CustomUser

    public class CustomUser {
    
        private  Integer custom_id;
    
        private String custom_name;
    
        private Integer custom_age;
    
        public Integer getCustom_id() {
            return custom_id;
        }
    
        public void setCustom_id(Integer custom_id) {
            this.custom_id = custom_id;
        }
    
        public String getCustom_name() {
            return custom_name;
        }
    
        public void setCustom_name(String custom_name) {
            this.custom_name = custom_name;
        }
    
        public Integer getCustom_age() {
            return custom_age;
        }
    
        public void setCustom_age(Integer custom_age) {
            this.custom_age = custom_age;
        }
    }
    

      

    7. CustomUserController

    @RestController
    @RequestMapping(path = "/get")
    public class CustomUserController {
    
        @Resource
        CustomUserService customUserService;
    
        @RequestMapping(path = "/user/{id}")
        public CustomUser findById(@PathVariable("id") int id){
          return   customUserService.findById(id);
    
        }
    
        @RequestMapping(path = "/user/all",method = RequestMethod.GET)
        public List<Map>findAll(@RequestParam("custom_id") Integer custom_id, Integer custom_age){
    
           List<Map> list=customUserService.findAll(custom_id,custom_age);
    
           return list;
        }
    
    
    
        @RequestMapping(path = "/user/insert",method = RequestMethod.GET)
        public CustomUser  create(){
            CustomUser user=new CustomUser();
            user.setCustom_age(31);
            user.setCustom_name("guoxw_4");
            customUserService.create(user);
            return  user;
    
        }
    
    
        @RequestMapping(path = "/user/update",method = RequestMethod.GET)
        public CustomUser  update(){
            CustomUser user=customUserService.findById(2);
            user.setCustom_age(user.getCustom_age()*2);
            customUserService.update(user);
            return  user;
    
        }
    
    
        @RequestMapping(path = "/user/del",method = RequestMethod.GET)
        public String  del(Integer id){
            customUserService.del(id);
            return  "ok";
    
        }
    
    
    
    }
    

      

    8.yml  

    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8
        username: root
        password: 12345678
    #  jackson:
    #    deserialization: true
    mybatis:
      config-location: classpath:/mybatis/mybatis-config.xml
      mapper-locations: classpath:/mybatis/mapper/*.xml
    logging:
      level:
        com.guoxw.mybatis_test: debug
    

    9. code :mybatis_test

    链接:https://pan.baidu.com/s/1NTf_H-n2Ch0Wwe878I84ig  密码:49ak
    

      

    注解方式

    : 不再需要配置mybatis下的mapper.xml  和mybatis.config.xml 文件

    yml配置文件

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: 123456
        url: jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    mybatis:
      configuration:
        map-underscore-to-camel-case: true   
    logging:
      level:
        com.gail.mybatis2: debug
        root: info 

     

    Mapper

    @Mapper
    public interface UserMapper {
    
    
    
        @Insert("insert into user(username,password) values(#{username},#{password})")
        int addUser(@Param("username") String name, @Param("password") String password);
    
    
       //  @Result 里面的property对应的是返回值User对象里面的字段, column 是指对应的数据库字段
    
        @Results({
                @Result(property = "id",column = "id"),
                @Result(property = "name" ,column = "username"),
                @Result(property = "pwd" ,column = "password")
        })
        @Select("select * from user where id =#{id}")
        User findById(@Param("id") String id);
    
        @Update("update user set username=#{name} where id=#{id}")
        void updateById(@Param("id") String id, @Param("username") String username);
    
        @Delete("delete from user where id=#{id}")
        void deleteById(@Param("id") String id);
    
        @Results({
                @Result(property = "id",column = "id"),
                @Result(property = "name" ,column = "username"),
                @Result(property = "pwd" ,column = "password")
        })
        @Select("select * from user")
        List<User> findAllUser();
    
    
    }
    

    Service

    @Service
    public class UserService {
    
    
        @Resource
        protected UserMapper userMapper;
    
    
        public User findById(String id) {
            return userMapper.findById(id);
        }
    
        public void addUser(String username, String pwd) {
            userMapper.addUser(username, pwd);
        }
    
    
        public void updataById(String id, String username) {
            userMapper.updateById(id,username);
        }
    
        public void deleteById(String id) {
            userMapper.deleteById(id);
    
        }
    
    
        public List<User> findAllUser() {
            return userMapper.findAllUser();
        }
    
    }
    

      

    entity 

    public class User {
    
        private  Integer id;
    
        private String  name;
    
        private String pwd;
    
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }
    

    Controller测试  

     

    @RestController
    public class MyController {
    
    
        @Autowired
        private UserService service;
    
        @RequestMapping(path = "/user/{id}")
        public User finById(@PathVariable("id") String id){
            return  service.findById(id);
        }
    
        @RequestMapping(path = "/user/add", method = RequestMethod.POST)
        public void  addUser(@RequestParam("name") String name, @RequestParam("pwd") String pwd){
            service.addUser(name,pwd);
        }
    
        @RequestMapping(path = "/get/all", method = RequestMethod.GET)
        public List<User>findAllUser(){
            return  service.findAllUser();
        }
    }
    

      

     

  • 相关阅读:
    开启我的博客历程
    RTSP协议视频智能流媒体服务平台EasyNVR录像计划功能实现过程
    如何在RTSP协议视频智能平台EasyNVR未登录的情况下也可以调用通道直播链接的接口?
    环保设备“云上查” 排污监管“线上盯” EasyNVR视频边缘计算网关助力“智慧环保”实现“智慧”监管
    网络摄像头RTSP协议视频平台EasyNVR录像计划模块开发过程
    如何在SSH连接linux的情况下使用wireshark抓包TSINGSEE青犀视频云边端架构产品中的问题?
    RTSP协议TSINGSEE青犀视频平台EasyNVR如何通过GET传值的方式获取通过登录鉴权
    TSINGSEE青犀视频平台EasyNVR为何需要跨域?为什么不能单纯的从前端来解决跨域问题?
    【解决方案】TSINGSEE青犀视频云边端架构RTSP视频边缘计算平台EasyNVR搭建“云上透明厨房”远程监控平台方案
    【解决方案】“云-边-端”三级架构协同打造基于安防视频云服务EasyCVR的智慧城市解决方案
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/11108525.html
Copyright © 2020-2023  润新知