zoukankan      html  css  js  c++  java
  • 【转】 springBoot(7)---整合Mybaties增删改查

    【转】 springBoot(7)---整合Mybaties增删改查

    整合Mybaties增删改查

    1、填写pom.xml

             <!-- mybatis依赖jar包 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
            
            <!--  web项目依赖jar包 -->
               <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            
            <!-- 热部署依赖jar包 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
            </dependency>
            
            <!-- mysql连接jar包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
                    
            <!-- 阿里巴巴druid数据源 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                    <artifactId>druid</artifactId>
                        <version>1.1.6</version>
            </dependency>
    pom文件

    2、填写application.properties

    #数据驱动可配也可以不配,因为系统会自动识别
    #spring.datasource.driver-class-name =com.mysql.jdbc.Driver
    
    spring.datasource.url=jdbc:mysql://localhost:3306/movie?useUnicode=true&characterEncoding=utf-8
    spring.datasource.username =root
    spring.datasource.password =root
    
    #springboot有自带数据源这个也可不配置
    spring.datasource.type =com.alibaba.druid.pool.DruidDataSource
    配置连接属性
    #数据驱动可配也可以不配,因为系统会自动识别
    #spring.datasource.driver-class-name =com.mysql.jdbc.Driver
    
    spring.datasource.url=jdbc:mysql://localhost:3306/movie?useUnicode=true&characterEncoding=utf-8
    spring.datasource.username =root
    spring.datasource.password =root
    
    #让控制台打印SQL语句,一般用于本地开发环境
    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    #springboot有自带数据源这个也可不配置
    spring.datasource.type =com.alibaba.druid.pool.DruidDataSource

    3、User实体

    import java.util.Date;
    //用户实体
    public class User {
    
        private int id;
        
        private String name;
        
        private String phone;
        
        private int age;
        
        private Date createTime;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public Date getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }    
    }
    User实体

    4.Springboot主类

    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    //@MapperScan会自动扫描里面的包,而且应该是可以自动给每个类装配一个Bean对象
    @SpringBootApplication
    @MapperScan("com.jincou.mapper")  
    public class MainApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MainApplication.class, args);
        }
    }

    5、UserMapper

    import java.util.List;
    
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Options;
    import org.apache.ibatis.annotations.Result;
    import org.apache.ibatis.annotations.Results;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    
    import com.jincou.model.User;
    
        /**
         * 功能描述:访问数据库的接口
         */
        public interface UserMapper {
            
            
            //推荐使用#{}取值,不要用${},因为存在注入的风险
             @Insert("INSERT INTO user(name,phone,create_time,age) VALUES(#{name}, #{phone}, #{createTime},#{age})")
             @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")   //keyProperty java对象的属性;keyColumn表示数据库的字段
             int insert(User user);
                          
           //column指数据库中的列,property是指实体的属性名,如果一致就不需要写
            @Select("SELECT * FROM user")
            @Results({
                @Result(column = "create_time",property = "createTime")      
            })
            List<User> getAll();
          
            @Select("SELECT * FROM user WHERE id = #{id}")
            @Results({
                 @Result(column = "create_time",property = "createTime")
            })
            User findById(Long id);
        
      
            @Update("UPDATE user SET name=#{name} WHERE id =#{id}")
            void update(User user);
        
            @Delete("DELETE FROM user WHERE id =#{userId}")
            void delete(Long userId);
        
        }

    6、UserServise层

    import com.jincou.model.User;
    
    public interface UserService {
    
        //这里只写了个add方法,其它的直接在控制层调用Dao层,正常开发流程都应该写在Service层
        public int add(User user);
            
    }
    UserServise

    7、UserServiseImpl

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.jincou.mapper.UserMapper;
    import com.jincou.model.User;
    import com.jincou.service.UserService;
    
    @Service
    public class UserServiceImpl implements UserService{
    
        //因为主类的@MapperScan方法,所以自动为UserMapper装配了一个userMapper对象
         @Autowired
         private UserMapper userMapper;
         
         //这里你传过去的时候user的id为null,而insert之后传回回来的user会把数据库中的id值带回来,真强大
        @Override
        public int add(User user) {
            userMapper.insert(user);
            int id = user.getId();
            return id;
        }    
    }

    8.Controller类

    import java.util.Date;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.jincou.mapper.UserMapper;
    import com.jincou.model.JsonData;
    import com.jincou.model.User;
    import com.jincou.service.UserService;
    
    @RestController
    @RequestMapping("/api/v1/user")
    public class UserController {
        
        //在UserServiceImpl定义了@Service实现类所以可以得到默认首字母小写的对象
        @Autowired
        private UserService userService;
    
        @Autowired
        private UserMapper userMapper;
        
        
        /**
         * 功能描述: user 保存接口
         */
        @GetMapping("add")
        public Object add(){
            
            User user = new User();
            user.setAge(11);
            user.setCreateTime(new Date());
            user.setName("张三");
            user.setPhone("1880177");
            int id = userService.add(user);
            
           return id;
        }
            
        /**
         * 功能描述:查找全部用户
         * 这里和下面是直接调用跳过Servise层,直接到DAO层
         */
        @GetMapping("findAll")
        public Object findAll(){
            
           return userMapper.getAll();
        }
        
        /**
         * 查找单个用户
         */
        @GetMapping("find_by_id")
        public Object findById(long id){
           return userMapper.findById(id);
        }
        
        /**
         * 删除单个用户
         */
        @GetMapping("del_by_id")
        public Object delById(long id){
        userMapper.delete(id);
           return "";
        }
        
        /**
         *更新用户
         */
        @GetMapping("update")
        public Object update(String name,int id){
            User user = new User();
            user.setName(name);
            user.setId(id);
            userMapper.update(user);
            return "";
        }        
    }

    测试

    1.准备好数据库数据:

    #Sql脚本
    CREATE TABLE `user` (
                  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
                  `name` varchar(128) DEFAULT NULL COMMENT '名称',
                  `phone` varchar(16) DEFAULT NULL COMMENT '用户手机号',
                  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                  `age` int(4) DEFAULT NULL COMMENT '年龄',
                  PRIMARY KEY (`id`)
                ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

    2测试结果

     插入用户,看后台的sql语句

    文献 

     1、开发mapper:参考语法 http://www.mybatis.org/mybatis-3/zh/java-api.html

     2、使用starter, maven仓库地址:http://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter

    3、 相关资料:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/#Configuration

    4、 整合问题集合:  https://my.oschina.net/hxflar1314520/blog/1800035

                                    https://blog.csdn.net/tingxuetage/article/details/80179772
                  

     想太多,做太少,中间的落差就是烦恼。想没有烦恼,要么别想,要么多做。上尉【9】

  • 相关阅读:
    阿里HBase高可用8年“抗战”回忆录
    Service Mesh 初体验
    阿里云HBase推出普惠性高可用服务,独家支持用户的自建、混合云环境集群
    Ververica Platform-阿里巴巴全新Flink企业版揭秘
    深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?
    AI加持的阿里云飞天大数据平台技术揭秘
    Nacos 常见问题及解决方法
    数据上云,应该选择全量抽取还是增量抽取?
    一文带你了解 Flink Forward 柏林站全部重点内容
    Oracle数据库中序列(SEQUENCE)的用法详解
  • 原文地址:https://www.cnblogs.com/Javastudy-note/p/13818022.html
Copyright © 2011-2022 走看看