• 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();
        }
    }
    

      

     

  • 相关阅读:
    nginx 安全请求头
    使用citus 列式存储压缩数据
    nginx ngx_http_realip 的功能以及使用
    act 的密钥&&环境变量管理
    oracle怎么查询重复的数据
    如何在Oracle中复制表结构和表数据
    2022成都.NET开发者Connect线下活动
    闭包具有逻辑内聚的功能
    编程范式是人类思维方式的投影代表了程序设计者认为程序应该如何被构建和执行的看法
    工程师是高级生产者
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/11108525.html
Copyright © 2020-2023  润新知