zoukankan      html  css  js  c++  java
  • SpringBoot五步配置Mybatis教程

    第一步:Maven里面添加mybatis的引用jar包:

    <!--mybatis-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
    </dependency>

    第二步:在application.properties文件里面添加如下代码

    #配置mysql数据源
    spring.datasource.url=jdbc:mysql://your-mysql-url/database-name?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    spring.datasource.username=username
    spring.datasource.password=password
    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    
    #security.basic.enabled=false
    
    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    
    
    ## Mybatis 配置
    mybatis.type-aliases-package=com.xfind.core.entity.xianyu
    mybatis.mapper-locations=classpath:mapper/*.xml
    #使全局的映射器启用或禁用缓存。
    mybatis.configuration.cache-enabled=true
    #全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。
    mybatis.configuration.lazy-loading-enabled=true
    #当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。
    mybatis.configuration.aggressive-lazy-loading=true
    #是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true
    mybatis.configuration.multiple-result-sets-enabled=true
    #是否可以使用列的别名 (取决于驱动的兼容性) default:true
    mybatis.configuration.use-column-label=true
    #允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false
    mybatis.configuration.use-generated-keys=true
    #指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射u3000PARTIAL:部分  FULL:全部
    mybatis.configuration.auto-mapping-behavior=partial
    #这是默认的执行类型  (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)
    mybatis.configuration.default-executor-type=simple
    #使用驼峰命名法转换字段。
    mybatis.configuration.map-underscore-to-camel-case=true
    #设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session
    mybatis.configuration.local-cache-scope=session
    #设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型
    mybatis.configuration.jdbc-type-for-null=null
    #如果数据为空的字段,则该字段省略不显示,可以通过添加配置文件,规定查询数据为空是则返回null。
    mybatis.configuration.call-setters-on-nulls=true

    第三步:设置启动类:

    //开启定时任务
    //@EnableScheduling
    @SpringBootApplication
    @EnableTransactionManagement//开启事务管理
    @MapperScan("com.xfind.core.mybatis")//与dao层的@Mapper二选一写上即可(主要作用是扫包)
    public class StartUp {
        public static void main(String[] args) {
            SpringApplication.run(StartUp.class, args);
        }
    }

    第四步:添加mapper文件和编写dao代码以及service和controller代码,
    1、我是在core的modules里面的resources文件夹下新建mapper文件夹,下面保存所有数据库访问的sql。
    2、新建实体类,我是在entity文件夹下创建的
    2、在dao层下新建mapper里面的方法
    3、在service层新建调用dao层类的逻辑代码
    4、在controller层新建调用service层的逻辑代码

    UserMapper.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.xfind.core.mybatis.UserDao">
        <select id="findAllUser" resultType="User">
            SELECT * from users
        </select>
    </mapper>

    User.java

    package com.xfind.core.entity.xianyu;
    
    import com.fasterxml.jackson.annotation.JsonIgnore;
    
    import java.util.Date;
    
    /**
     * Created by zhangwei on 2018/6/1.
     */
    public class User {
        private String id;
        private String username;
        private String phone;
        private String email;
        @JsonIgnore
        private String password;
        private String ip;
        private String mac;
        private int type;
        private int delFlag;
        private String memo;
        private Date lastPasswordResetDate;
    
        private Date lastLoginDate;
    
        private int iosTest;
    
        private Date createdDt;
    
        private Date updatedDt;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getIp() {
            return ip;
        }
    
        public void setIp(String ip) {
            this.ip = ip;
        }
    
        public String getMac() {
            return mac;
        }
    
        public void setMac(String mac) {
            this.mac = mac;
        }
    
        public int getType() {
            return type;
        }
    
        public void setType(int type) {
            this.type = type;
        }
    
        public int getDelFlag() {
            return delFlag;
        }
    
        public void setDelFlag(int delFlag) {
            this.delFlag = delFlag;
        }
    
        public String getMemo() {
            return memo;
        }
    
        public void setMemo(String memo) {
            this.memo = memo;
        }
    
        public Date getLastPasswordResetDate() {
            return lastPasswordResetDate;
        }
    
        public void setLastPasswordResetDate(Date lastPasswordResetDate) {
            this.lastPasswordResetDate = lastPasswordResetDate;
        }
    
        public Date getLastLoginDate() {
            return lastLoginDate;
        }
    
        public void setLastLoginDate(Date lastLoginDate) {
            this.lastLoginDate = lastLoginDate;
        }
    
        public int getIosTest() {
            return iosTest;
        }
    
        public void setIosTest(int iosTest) {
            this.iosTest = iosTest;
        }
    
        public Date getCreatedDt() {
            return createdDt;
        }
    
        public void setCreatedDt(Date createdDt) {
            this.createdDt = createdDt;
        }
    
        public Date getUpdatedDt() {
            return updatedDt;
        }
    
        public void setUpdatedDt(Date updatedDt) {
            this.updatedDt = updatedDt;
        }
    }
    

    UserDao.java

    @Repository
    public interface UserDao {
        List<User> findAllUser();
    }
    

    UserService.java

    public interface XyUserService {
        List<User> selectUsers();
    }
    

    UserServiceImpl.java

    @Service
    public class XyUserServiceImpl implements XyUserService {
    
        @Autowired
        UserDao userDao;
    
        @Override
        public List<User> selectUsers() {
            return userDao.findAllUser();
        }
    }
    

    UserController.java

    @RestController
    @RequestMapping("/xianyu")
    public class UserController {
    
        @Autowired
        XyUserServiceImpl xyUserService;
    
        @GetMapping("/user")
        public ResponseEntity<?> getUsers(){
            List<User> users = xyUserService.selectUsers();
            return ResponseEntity.ok(users);
        }
    }
    

    clipboard.png

    第五步:访问试试是否已经设置成功并返回数据

    clipboard.png

  • 相关阅读:
    关于request对象的parameter和attribute
    EL表达式知识点总结
    隐藏基于Dialog的MFC的主窗体
    VLD 无法打印堆栈调用情况
    javascript对象属性的命名规则
    javascript中boolean类型和其他类型的转换
    javascript中对象访问自身属性的方式
    java与C++相比增加和缺少的特性--持续更新
    java基础算法(一):最大子序列和问题的多种算法思路
    Jconsole或者VisualVM监控远程主机(阿里云,jdk11或者8)
  • 原文地址:https://www.cnblogs.com/sea520/p/11720439.html
Copyright © 2011-2022 走看看