spring+springmvc+mybatis-plus 纯注解开发

最近刚完成一个项目,刚好有一点时间,来完成基于spring+springmvc+mybatis-plus 纯注解开发

一、创建工程、导入依赖

1、新建一个基于maven的web工程,使用JDK1.8

2、调整目录结构

2.1、新建java

2.2、新建resources

2.3、删除web.xml、构建基础包

2.4、工程目录构建完成展示

2、配置tomcat服务器

2.1、服务器配置

2.2、测试服务器配置

3、pom.xml文件配置

  1 <properties>
  2     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3     <maven.compiler.source>1.8</maven.compiler.source>
  4     <maven.compiler.target>1.8</maven.compiler.target>
  5   </properties>
  6
  7   <dependencies>
  8     <dependency>
  9       <groupId>org.springframework</groupId>
 10       <artifactId>spring-context</artifactId>
 11       <version>5.1.5.RELEASE</version>
 12     </dependency>
 13     <dependency>
 14       <groupId>org.springframework</groupId>
 15       <artifactId>spring-core</artifactId>
 16       <version>5.1.5.RELEASE</version>
 17     </dependency>
 18     <dependency>
 19       <groupId>org.springframework</groupId>
 20       <artifactId>spring-beans</artifactId>
 21       <version>5.1.5.RELEASE</version>
 22     </dependency>
 23     <dependency>
 24       <groupId>org.springframework</groupId>
 25       <artifactId>spring-web</artifactId>
 26       <version>5.1.5.RELEASE</version>
 27     </dependency>
 28     <dependency>
 29       <groupId>org.springframework</groupId>
 30       <artifactId>spring-webmvc</artifactId>
 31       <version>5.1.5.RELEASE</version>
 32     </dependency>
 33     <dependency>
 34       <groupId>org.springframework</groupId>
 35       <artifactId>spring-aop</artifactId>
 36       <version>5.1.5.RELEASE</version>
 37     </dependency>
 38     <dependency>
 39       <groupId>org.springframework</groupId>
 40       <artifactId>spring-tx</artifactId>
 41       <version>5.1.5.RELEASE</version>
 42     </dependency>
 43     <dependency>
 44       <groupId>org.springframework</groupId>
 45       <artifactId>spring-jdbc</artifactId>
 46       <version>5.1.5.RELEASE</version>
 47     </dependency>
 48     <dependency>
 49       <groupId>org.mybatis</groupId>
 50       <artifactId>mybatis-spring</artifactId>
 51       <version>1.3.2</version>
 52     </dependency>
 53     <dependency>
 54       <groupId>org.mybatis</groupId>
 55       <artifactId>mybatis</artifactId>
 56       <version>3.4.6</version>
 57     </dependency>
 58     <dependency>
 59       <groupId>com.baomidou</groupId>
 60       <artifactId>mybatis-plus</artifactId>
 61       <version>3.0.7.1</version>
 62     </dependency>
 63     <dependency>
 64       <groupId>com.baomidou</groupId>
 65       <artifactId>mybatis-plus-generator</artifactId>
 66       <version>3.0.7.1</version>
 67     </dependency>
 68     <dependency>
 69       <groupId>org.apache.velocity</groupId>
 70       <artifactId>velocity-engine-core</artifactId>
 71       <version>2.0</version>
 72     </dependency>
 73     <dependency>
 74       <groupId>org.apache.commons</groupId>
 75       <artifactId>commons-lang3</artifactId>
 76       <version>3.7</version>
 77     </dependency>
 78     <dependency>
 79       <groupId>com.fasterxml.jackson.core</groupId>
 80       <artifactId>jackson-core</artifactId>
 81       <version>2.9.8</version>
 82     </dependency>
 83     <dependency>
 84       <groupId>com.fasterxml.jackson.core</groupId>
 85       <artifactId>jackson-databind</artifactId>
 86       <version>2.9.8</version>
 87     </dependency>
 88     <dependency>
 89       <groupId>com.fasterxml.jackson.core</groupId>
 90       <artifactId>jackson-annotations</artifactId>
 91       <version>2.9.8</version>
 92     </dependency>
 93     <dependency>
 94       <groupId>com.oracle</groupId>
 95       <artifactId>ojdbc6</artifactId>
 96       <version>11.2.0.1.0</version>
 97     </dependency>
 98     <dependency>
 99       <groupId>mysql</groupId>
100       <artifactId>mysql-connector-java</artifactId>
101       <version>6.0.5</version>
102     </dependency>
103     <dependency>
104       <groupId>com.mchange</groupId>
105       <artifactId>c3p0</artifactId>
106       <version>0.9.5.2</version>
107     </dependency>
108     <dependency>
109       <groupId>com.mchange</groupId>
110       <artifactId>c3p0</artifactId>
111       <version>0.9.5.2</version>
112     </dependency>
113     <dependency>
114       <groupId>com.alibaba</groupId>
115       <artifactId>druid</artifactId>
116       <version>1.1.10</version>
117     </dependency>
118     <dependency>
119       <groupId>org.projectlombok</groupId>
120       <artifactId>lombok</artifactId>
121       <version>1.18.8</version>
122       <scope>provided</scope>
123     </dependency>
124     <dependency>
125       <groupId>junit</groupId>
126       <artifactId>junit</artifactId>
127       <version>4.11</version>
128       <scope>test</scope>
129     </dependency>
130     <dependency>
131       <groupId>javax.servlet</groupId>
132       <artifactId>javax.servlet-api</artifactId>
133       <version>3.1.0</version>
134       <scope>provided</scope>
135     </dependency>
136   </dependencies>
137
138   <build>
139     <finalName>loginannotationday02</finalName>
140     <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
141       <plugins>
142         <plugin>
143           <artifactId>maven-clean-plugin</artifactId>
144           <version>3.1.0</version>
145         </plugin>
146         <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
147         <plugin>
148           <artifactId>maven-resources-plugin</artifactId>
149           <version>3.0.2</version>
150         </plugin>
151         <plugin>
152           <artifactId>maven-compiler-plugin</artifactId>
153           <version>3.8.0</version>
154         </plugin>
155         <plugin>
156           <artifactId>maven-surefire-plugin</artifactId>
157           <version>2.22.1</version>
158         </plugin>
159         <plugin>
160           <artifactId>maven-war-plugin</artifactId>
161           <version>3.2.2</version>
162         </plugin>
163         <plugin>
164           <artifactId>maven-install-plugin</artifactId>
165           <version>2.5.2</version>
166         </plugin>
167         <plugin>
168           <artifactId>maven-deploy-plugin</artifactId>
169           <version>2.8.2</version>
170         </plugin>
171       </plugins>
172     </pluginManagement>
173   </build>

二、编写mybatis-plus的代码生成工具

调整目录结构

在util下新建mybatis代码生成工具类

mybatisplusutil代码如下

  1 package com.cxw.util;
  2
  3 import com.baomidou.mybatisplus.annotation.DbType;
  4 import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
  5 import com.baomidou.mybatisplus.core.toolkit.StringPool;
  6 import com.baomidou.mybatisplus.generator.AutoGenerator;
  7 import com.baomidou.mybatisplus.generator.InjectionConfig;
  8 import com.baomidou.mybatisplus.generator.config.*;
  9 import com.baomidou.mybatisplus.generator.config.converts.OracleTypeConvert;
 10 import com.baomidou.mybatisplus.generator.config.po.TableInfo;
 11 import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
 12 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 13 import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
 14 import org.apache.commons.lang3.StringUtils;
 15
 16 import java.util.ArrayList;
 17 import java.util.List;
 18 import java.util.Scanner;
 19
 20 public class MybatisPlusUtil{
 21
 22     /**
 23      * <p>
 24      * 读取控制台内容
 25      * </p>
 26      */
 27     static String Scanner(String tip) {
 28         Scanner scanner = new Scanner(System.in);
 29         StringBuilder help = new StringBuilder();
 30         help.append("请输入" + tip + ":");
 31         System.out.println(help.toString());
 32         if (scanner.hasNext()) {
 33             String ipt = scanner.next();
 34             if (StringUtils.isNotEmpty(ipt)) {
 35                 return ipt;
 36             }
 37         }
 38         throw new MybatisPlusException("请输入正确的" + tip + "!");
 39     }
 40
 41     public static void main(String[] args) {
 42         //代码生成器
 43         AutoGenerator autoGenerator = new AutoGenerator();
 44
 45         //全局配置
 46         GlobalConfig globalConfig = new GlobalConfig();
 47         final  String projectPath = System.getProperty("user.dir");
 48         globalConfig.setOutputDir(projectPath + "/src/main/java");
 49         globalConfig.setAuthor("cxw");
 50 //        globalConfig.setOpen(false);
 51         //是否覆盖文件
 52         globalConfig.setFileOverride(true);
 53         //不需要ActiveRecord特性的请改为false
 54         globalConfig.setActiveRecord(false);
 55         //XML 二级缓存
 56         globalConfig.setEnableCache(false);
 57         //XML ResultMap
 58         globalConfig.setBaseResultMap(true);
 59         //XML columList
 60         globalConfig.setBaseColumnList(false);
 61         autoGenerator.setGlobalConfig(globalConfig);
 62
 63         //数据源配置
 64         DataSourceConfig dataSourceConfig = new DataSourceConfig();
 65         dataSourceConfig.setDbType(DbType.MYSQL);
 66         //类型转换
 67         dataSourceConfig.setTypeConvert(new OracleTypeConvert(){
 68             @Override
 69             public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
 70                 return super.processTypeConvert(globalConfig, fieldType);
 71             }
 72         });
 73         dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/cxwdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false");
 74         dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
 75         dataSourceConfig.setUsername("root");
 76         dataSourceConfig.setPassword("123456");
 77         autoGenerator.setDataSource(dataSourceConfig);
 78
 79
 80
 81         //包配置
 82         final PackageConfig packageConfig = new PackageConfig();
 83         //基础包名
 84         packageConfig.setParent("com.cxw");
 85         //模块名
 86         packageConfig.setModuleName(Scanner("模块名"));
 87         packageConfig.setService("service");
 88         packageConfig.setServiceImpl("service.impl");
 89         packageConfig.setEntity("entity");
 90         packageConfig.setController("controller");
 91         packageConfig.setMapper("mapper");
 92         packageConfig.setXml("mapper");
 93         autoGenerator.setPackageInfo(packageConfig);
 94
 95         // 自定义配置
 96         InjectionConfig injectionConfig = new InjectionConfig() {
 97             @Override
 98             public void initMap() {
 99                 // to do nothing
100             }
101         };
102         List<FileOutConfig> focList = new ArrayList<>();
103         focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
104             @Override
105             public String outputFile(TableInfo tableInfo) {
106                 // 自定义输入文件名称
107                 return projectPath + "/src/main/resources/mapper/" + packageConfig.getModuleName()
108                         + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
109             }
110         });
111         injectionConfig.setFileOutConfigList(focList);
112         autoGenerator.setCfg(injectionConfig);
113         autoGenerator.setTemplate(new TemplateConfig().setXml(null));
114
115         // 策略配置
116         StrategyConfig strategy = new StrategyConfig();
117         strategy.setNaming(NamingStrategy.underline_to_camel);
118         strategy.setColumnNaming(NamingStrategy.underline_to_camel);
119         strategy.setEntityLombokModel(false);
120         strategy.setRestControllerStyle(true);
121         strategy.setCapitalMode(true);
122         strategy.setInclude(Scanner("表名"));
123         strategy.setControllerMappingHyphenStyle(true);
124         strategy.setEntityTableFieldAnnotationEnable(true);
125 //        strategy.setTablePrefix("n_");
126         autoGenerator.setStrategy(strategy);
127         autoGenerator.setTemplateEngine(new VelocityTemplateEngine());
128         autoGenerator.execute();
129     }
130 }

通过工具类生成代码

生成后目录结构如下

三、spring+springmvc+mybatis-plus 纯注解搭建

1、构建核心配置文件

 1 package com.cxw.config;
 2
 3 import org.springframework.context.annotation.ComponentScan;
 4 import org.springframework.context.annotation.Configuration;
 5 import org.springframework.context.annotation.FilterType;
 6 import org.springframework.stereotype.Controller;
 7
 8
 9 @Configuration
10 @ComponentScan(basePackages = {"com.cxw"},excludeFilters = {
11         @ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class),
12 })
13 /**
14  * 核心配置文件
15  */
16 public class AppConfig {
17
18 }

2、构建springmvc配置文件

 1 package com.cxw.config;
 2
 3 import org.springframework.context.annotation.ComponentScan;
 4 import org.springframework.context.annotation.Configuration;
 5 import org.springframework.context.annotation.FilterType;
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 8
 9 @Configuration
10 @ComponentScan(basePackages = "com.cxw",
11     includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,
12     value = Controller.class)})
13 @EnableWebMvc
14 /**
15  * springmvc配置文件
16  */
17 public class WebConfig {
18
19 }

3、构建数据库配置文件

1 spring.datasource.user=root
2 spring.datasource.password=123456
3 spring.datasource.driver=com.mysql.cj.jdbc.Driver
4 spring.datasource.url=jdbc:mysql://localhost:3306/cxwdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false

4、构建数据库配置文件关联文件

 1 package com.cxw.config;
 2
 3 import lombok.Data;
 4 import org.springframework.beans.factory.annotation.Value;
 5 import org.springframework.context.annotation.Configuration;
 6 import org.springframework.context.annotation.PropertySource;
 7
 8 @PropertySource("classpath:db.properties")
 9 @Data
10 @Configuration
11 public class PropertyConfig {
12
13     @Value("${spring.datasource.url}")
14     private String url;
15     @Value("${spring.datasource.driver}")
16     private String driver;
17     @Value("${spring.datasource.user}")
18     private String user;
19     @Value("${spring.datasource.password}")
20     private String password;
21
22 }

5、构建mybatisplus配置文件

 1 package com.cxw.config;
 2
 3 import com.alibaba.druid.pool.DruidDataSource;
 4 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 5 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 6 import org.mybatis.spring.annotation.MapperScan;
 7 import org.springframework.context.annotation.Bean;
 8 import org.springframework.context.annotation.Configuration;
 9
10 import javax.sql.DataSource;
11
12 @Configuration
13 @MapperScan(value = "com.cxw.studentinfo.mapper")
14 public class MybatisPlusConfig {
15     /**
16      * 配置数据源
17      */
18     @Bean
19     public DataSource dataSource(PropertyConfig propertyConfig){
20         DruidDataSource dataSource = new DruidDataSource();
21         dataSource.setUsername(propertyConfig.getUser());
22         dataSource.setPassword(propertyConfig.getPassword());
23         dataSource.setUrl(propertyConfig.getUrl());
24         dataSource.setDriverClassName(propertyConfig.getDriver());
25         return dataSource;
26     }
27
28     /*@Bean
29     public DataSource dataSource(PropertyConfig propertyConfig) throws Exception {
30         ComboPooledDataSource dataSource = new ComboPooledDataSource();
31         dataSource.setUser(propertyConfig.getUser());
32         dataSource.setPassword(propertyConfig.getPassword());
33         dataSource.setJdbcUrl(propertyConfig.getUrl());
34         dataSource.setDriverClass(propertyConfig.getDriver());
35         return dataSource;
36     }*/
37
38     /**
39      * 获得getMybatisSqlSessionFactoryBean
40      * @return
41      */
42     @Bean
43     public MybatisSqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
44         MybatisSqlSessionFactoryBean mybatisPlus  = new MybatisSqlSessionFactoryBean();
45         mybatisPlus.setDataSource(dataSource);
46         return mybatisPlus;
47     }
48
49
50     /**
51      * 设置mapper文件的扫描路径
52      * @return
53      */
54    /* @Bean
55     public MapperScannerConfigurer getMapperScannerConfigurer(){
56         MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
57         mapperScannerConfigurer.setBasePackage("com.cxw.studentinfo,mapper");
58         return mapperScannerConfigurer;
59     }*/
60
61     /**
62      * 分页插件
63      * @return
64      */
65     @Bean
66     public PaginationInterceptor getPaginationInterceptor(){
67         PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
68         //自定义方言 可以没有
69         paginationInterceptor.setDialectType("mysql");
70         return paginationInterceptor;
71     }
72
73 }

6、构建核心初始化文件

package com.cxw.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
 * web.xml替代文件,可以简单理解为相web.xml文件
 */
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    //将bean加入容器
    @Override
    protected Class<?>[] getRootConfigClasses() {
        //这里可以配置需要加入容器的Bean,同样可以声明配置类,然后加Bean
        return new Class[]{AppConfig.class,MybatisPlusConfig.class};
    }

    //这个也是相当于将Bean加入容器
    //相当于springmvc容器
    // url映射配置,返回spring的配置文件
    //这里WebConfig主要是配置DispatcherSerlvet,视频解析器,JSON等
    @Override
    protected Class<?>[] getServletConfigClasses() {
        //return null;
        return new Class[]{WebConfig.class};
    }
    //拦截请求匹配,只拦截/
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

四、逻辑代码编写

1、controller代码

package com.cxw.studentinfo.controller;

import com.cxw.studentinfo.entity.TblStudent;
import com.cxw.studentinfo.service.ITblStudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author cxw
 * @since 2019-09-25
 */
@RestController
@RequestMapping("/studentinfo/tbl-student")
public class TblStudentController {
    private ITblStudentService iTblStudentService;

    @Autowired
    public TblStudentController(ITblStudentService iTblStudentService){
        this.iTblStudentService = iTblStudentService;
    }

    public TblStudentController(){

    }

    @RequestMapping("/gettblstudentbyid/{id}")
    public TblStudent getTblStudentById(@PathVariable("id") String id){
        TblStudent student = iTblStudentService.getById(id);
        return student;
    }

}

2、serivce代码

 1 package com.cxw.studentinfo.service;
 2
 3 import com.cxw.studentinfo.entity.TblStudent;
 4 import com.baomidou.mybatisplus.extension.service.IService;
 5
 6 /**
 7  * <p>
 8  *  服务类
 9  * </p>
10  *
11  * @author cxw
12  * @since 2019-09-25
13  */
14 public interface ITblStudentService extends IService<TblStudent> {
15
16 }

3、impl代码


package com.cxw.studentinfo.service.impl;

import com.cxw.studentinfo.entity.TblStudent;import com.cxw.studentinfo.mapper.TblStudentMapper;import com.cxw.studentinfo.service.ITblStudentService;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;

/** * <p> *  服务实现类 * </p> * * @author cxw * @since 2019-09-25 */@Servicepublic class TblStudentServiceImpl extends ServiceImpl<TblStudentMapper, TblStudent> implements ITblStudentService {

    private TblStudentMapper tblStudentMapper;

    @Autowired    public TblStudentServiceImpl(TblStudentMapper tblStudentMapper){        this.tblStudentMapper = tblStudentMapper;    }

    public TblStudentServiceImpl( ){

    }

4、mapper代码

 1 package com.cxw.studentinfo.mapper;
 2
 3 import com.cxw.studentinfo.entity.TblStudent;
 4 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 5 import org.springframework.stereotype.Service;
 6
 7 /**
 8  * <p>
 9  *  Mapper 接口
10  * </p>
11  *
12  * @author cxw
13  * @since 2019-09-25
14  */
15 @Service
16 public interface TblStudentMapper extends BaseMapper<TblStudent> {
17
18 }

5、entity代码

  1 package com.cxw.studentinfo.entity;
  2
  3 import com.baomidou.mybatisplus.annotation.TableId;
  4 import java.time.LocalDateTime;
  5 import com.baomidou.mybatisplus.annotation.TableField;
  6 import java.io.Serializable;
  7
  8 /**
  9  * <p>
 10  *
 11  * </p>
 12  *
 13  * @author cxw
 14  * @since 2019-09-25
 15  */
 16 public class TblStudent implements Serializable {
 17
 18     private static final long serialVersionUID = 1L;
 19
 20     /**
 21      * 主键
 22      */
 23     @TableId("id")
 24     private String id;
 25
 26     /**
 27      * 姓名
 28      */
 29     @TableField("name")
 30     private String name;
 31
 32     /**
 33      * 年龄
 34      */
 35     @TableField("age")
 36     private String age;
 37
 38     /**
 39      * 性别
 40      */
 41     @TableField("sex")
 42     private String sex;
 43
 44     /**
 45      * 数据新增用户id
 46      */
 47     @TableField("datainsuserid")
 48     private String datainsuserid;
 49
 50     /**
 51      * 数据新增时间
 52      */
 53     @TableField("datainstime")
 54     private LocalDateTime datainstime;
 55
 56
 57     public String getId() {
 58         return id;
 59     }
 60
 61     public void setId(String id) {
 62         this.id = id;
 63     }
 64
 65     public String getName() {
 66         return name;
 67     }
 68
 69     public void setName(String name) {
 70         this.name = name;
 71     }
 72
 73     public String getAge() {
 74         return age;
 75     }
 76
 77     public void setAge(String age) {
 78         this.age = age;
 79     }
 80
 81     public String getSex() {
 82         return sex;
 83     }
 84
 85     public void setSex(String sex) {
 86         this.sex = sex;
 87     }
 88
 89     public String getDatainsuserid() {
 90         return datainsuserid;
 91     }
 92
 93     public void setDatainsuserid(String datainsuserid) {
 94         this.datainsuserid = datainsuserid;
 95     }
 96
 97     public LocalDateTime getDatainstime() {
 98         return datainstime;
 99     }
100
101     public void setDatainstime(LocalDateTime datainstime) {
102         this.datainstime = datainstime;
103     }
104
105     @Override
106     public String toString() {
107         return "TblStudent{" +
108         "id=" + id +
109         ", name=" + name +
110         ", age=" + age +
111         ", sex=" + sex +
112         ", datainsuserid=" + datainsuserid +
113         ", datainstime=" + datainstime +
114         "}";
115     }
116 }

6、mapper.xml代码

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3 <mapper namespace="com.cxw.studentinfo.mapper.TblStudentMapper">
 4
 5     <!-- 通用查询映射结果 -->
 6     <resultMap id="BaseResultMap" type="com.cxw.studentinfo.entity.TblStudent">
 7         <id column="id" property="id" />
 8         <result column="name" property="name" />
 9         <result column="age" property="age" />
10         <result column="sex" property="sex" />
11         <result column="datainsuserid" property="datainsuserid" />
12         <result column="datainstime" property="datainstime" />
13     </resultMap>
14
15 </mapper>

五、测试

1、数据库查询结果展示

2、运行程序,访问后结构展示

六、总结和疑问

1、使用代码生成器的时候,如果使用的是Oracle数据库,表名似乎需要大写才能生成

2、配置mapper扫包的时候,如果使用非注解的形式,似乎会造成重复扫包,导致会找不到service文件

以上两个问题是我在构建项目的时候遇到的问题

原文地址:https://www.cnblogs.com/saber-servlet/p/11586511.html

时间: 2024-10-08 19:12:22

spring+springmvc+mybatis-plus 纯注解开发的相关文章

Spring+SpringMVC+mybatis整合以及注解的使用

1.包结构:  2.spring配置:基本的DAO配置以及扫描Mapper(扫描出来的Mapper为首字母小写) 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:context="http://www.springframework.org/sche

Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——SpringMVC注解开发(基础篇) 本文主要内容: (1)SpringMVC校验 (2)数据回显 (3)异常处理器 (4)图片上传 (5)Json数据交互 (6)支持RESTful 1.SpringMVC校验 1.1校验理解 项目中,通常使用较多的是前端的校验,比如页面中js校验.对于安全要求较高的

Spring+SpringMVC+MyBatis深入学习及搭建(十五)——SpringMVC注解开发(基础篇)

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7065294.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十四)--SpringMVC和MyBatis整合 1.商品修改功能开发 1.1需求 操作流程: (1)进入商品查询列表页面: (2)点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询),  要修改的商品从数据库查询,根据商品id(主键)查询商品信息: (3)在商品修改页面,修改商品信息,修改后,

用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)在这个基础上面 继续进行spring的配置. 回顾上面  我们已经成功测试通过了Mybatis的配置. 这时候的目录结构是: 一:下面我们继续补充目录结构,在com.peakfortake的文件目录项目 

Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发(转发同上)

前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)--MyBatis的基础知识.MybatisFirst中存在大量重复的代码.这次简化下代码: 原地址:http://www.cnblogs.com/shanheyongmu/p/7121016.html 使用MyBatis开发Dao,通常有两种方法,即原始Dao开发方法和Mapper接口开发方法. 1.SqlSession使用范围 1.1 SqlsessionFactoryBuilder 通过SqlSessionFac

Spring注解处理Ajax请求-JSON格式[系统架构:Spring+SpringMVC+MyBatis+MySql]

这是自己曾写的一个系统(养老保险管理)中的一个小片段,今天突然想到把请求数据改成json,该如何处理.(Spring+SpringMVC+MyBatis+MySql)如下 1.前端jsp页面 <div class="tab_tip"> 请输入[身份证号或姓名] <input type="text" class="tab_getText" id="tab1_getText"> <input type

SSM框架 (Spring+SpringMVC+MyBatis)

SSM框架--详细整合教程(Spring+SpringMVC+MyBatis) springspringmvcmybatis整合教程ssm整合 1.基本概念  1.1.Spring          Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spri

Spring+SpringMVC+Mybatis+Mysql整合实例【转】

本文要实现Spring+SpringMVC+Mybatis+Mysql的一个整合,实现了SpringMVC控制访问的页面,将得到的页面参数传递给Spring中的Mybatis的bean类,然后查找Mysql数据的功能,并通过JSP显示出来.建议可以先看笔者另一文章Mybatis与Spring整合创建Web项目 .笔者觉得整合过程中问题比较多的还是Spring+Mybatis的整合,SpringMVC的整合还是比较简单. Spring        Spring 是一个开源框架, Spring 是

[JSP]Maven+SSM框架(Spring+SpringMVC+MyBatis)

来源:http://blog.csdn.net/zhshulin/article/details/37956105?utm_source=tuicool&utm_medium=referral(以下博文对原博文有改动和补充) 开发环境: Eclipse Java EE IDE for Web Developers. Version: Mars.2 Release (4.5.2) apache-tomcat-8.0.33 jdk1.8.0_77 MySQL 5.0.11-dev(官网下载需要账号登