1.resources下添加spring

  • 添加spring-context.xml,设置controller的路径,以及引入数据库配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
">
<!-- 自动扫描com.zll.springboot.demo包,包中用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.zll.springboot.demo" />
<!--引入数据库配置文件-->
<import resource="spring-db.xml"/>
</beans>
  • 在resources/application.properties中配置数据库连接,这里写部署相关的配置,包括数据库连接,还有一些其它配置
 #数据库连接:地址、用户名、密码
#数据库地址后加上一些编码格式,使得不出现乱码
spring.datasource.url=jdbc:mysql://url:port/database_name?useUnicode=true&characterEncoding=utf8&useOldAliasMetadataBehavior=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=user_name
spring.datasource.password=user_password
#driver
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#映射文件所在地址,表示resources/mapper/*.xml
mybatis.mapperLocations=classpath:mapper/*.xml
server.port=8011
server.session.timeout=10
server.tomcat.uri-encoding=UTF-8
  • 添加spring-db.xml文件,从application.properties中读取数据来加载数据库
 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- 加载配置JDBC文件 -->
<context:property-placeholder location="classpath:application.properties" />
<!-- 数据源 ${jdbc.url}这个要和上面application.properties中的一样 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean> <!-- 开启注解配置 即Autowried -->
<!-- <context:annotation-config/> -->
<!--其实component-scan 就有了annotation-config的功能即把需要的类注册到了spring容器中 -->
<context:component-scan base-package="cn.zll.springboottest.dao" /> <!-- 在使用mybatis时 spring使用sqlsessionFactoryBean 来管理mybatis的sqlsessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- mybatis配置文件路径 -->
<property name="configLocation" value="" />
<!-- 实体类映射文件路径,这里只有一个就写死了,多个可以使用mybatis/*.xml来替代 -->
<property name="mapperLocations" value="classpath:mapper/*.xml" />
</bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0">
<ref bean="sqlSessionFactory" />
</constructor-arg>
</bean> <!--动态代理实现 不用写dao的实现 -->
<bean id="MapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 这里的basePackage 指定了dao层接口路劲,这里的dao接口不用自己实现 -->
<property name="basePackage" value="com.wacai.qa.springboot.demo" />
<!-- 如果只有一个数据源的话可以不用指定,但是如果有多个数据源的话必须要指定 -->
<!-- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> -->
<!--直接制定了sqlsessionTemplate名称,这个和上面的其实是一样的 -->
<property name="sqlSessionTemplateBeanName" value="sqlSession" />
</bean> <!--事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 使用全注释事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
  • 需要在pom.xml上添加jdbc和mybatis的配置
 <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
  • classpath包含了几个路径:src/main/java/; /src/main/resources/
  • 需要在pom.xml中添加mysql配置,没有加的话com.mysql.jdbc.Driver会找不到
 <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.4</version>
</dependency>

2.开始写sql啦

  • 在resource下添加mapper,然后在mapper下添加UserMapper.xml,在这里写sql语句
 <?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">
<!--命名空间dao-->
<mapper namespace="com.springboot.demo.dao.UserDao">
<!--sql结果与entity的映射-->
<resultMap id="userResult" type="com.springboot.demo.entity.User">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="nick_name" property="nickName" jdbcType="VARCHAR"/>
<result column="email" property="email" jdbcType="VARCHAR"/>
<result column="phone_number" property="phoneNumber" jdbcType="VARCHAR"/>
</resultMap>
<!--数据库基本字段-->
<sql id="Base_Column_List">
id, nick_name, email, phone_number
</sql>
<!--写sql语句,不同的方法用不同标签,如insert/select/delete等-->
<insert id="insert">
INSERT INTO user (nick_name, email, phone_number) VALUES ( #{nickName},#{email}, #{phoneNumber})
</insert>
<!--select会返回结果-->
<select id="query" resultMap="userResult">
SELECT
<include refid="Base_Column_List"/>
from user where id=#{id}
</select>
</mapper>

3.反向工程,从数据库来创建dao和entity对象

参考[利用mybatis-generator自动生成代码]

  • 在pom.xml中添加mybatis-generator-maven-plugin插件配置
 <plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
  • 在resources下添加generatorConfig.xml文件,配置数据库连接,生成类的位置等
 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--mysql 连接数据库jar 这里选择自己本地位置,可以在external Libraries中查找位置和版本-->
<classPathEntry location="/Users/zll/.m2/repository/mysql/mysql-connector-java/5.1.39/mysql-connector-java-5.1.39.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://url:port/databasename" userId="user_name"
password="user_password">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!--下面是几个要生成的文件的位置配置-->
<!--生成entity,位置targetProject/targetPackage -->
<javaModelGenerator targetPackage="com.zll.springboot.demo.entity" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置。如果maven工程只是单独的一个工程,targetProject="src/main/java"。若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="com.zll.springboot.demo.persistence"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.zll.springboot.demo.persistence" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 这里写要转换的表名,比如下面写了baidu_region,那就会将这个表转换过来-->
<table schema="" tableName="baidu_region"></table>
</context>
</generatorConfiguration>
  • 执行反向工程,让它开始配置

    • maven Projects——plugins——mybatis generator
    • 生成的文件:dao下有XXXMapper, entity下有XXX和XXXExample,resources/mapper下有XXXMapper.xml
    • 在XXXMapper.xml中操作数据时,需要用到#{变量名},这个变量名是与entity中的对应,不是数据库字段名

springboot第一个项目【mybatis】的更多相关文章

  1. springboot第一个项目【创建】

    1.new project,不勾选create from archetype,直接选择 2.next下一步 在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个属性构成的,分别是groupId ...

  2. (一 、上)搭建简单的SpringBoot + java + maven + mysql + Mybatis+通用Mapper 《附项目源码》

    最近公司一直使用 springBoot 作为后端项目框架, 也负责搭建了几个新项目的后端框架.在使用了一段时间springBoot 后,感觉写代码 比spring 更加简洁了(是非常简洁),整合工具也 ...

  3. 使用IDEA构建Spring-boot多模块项目配置流程

    使用IDEA构建Spring-boot多模块项目配置流程 1.创建项目 点击Create New Project 在左侧选中Spring Initializer,保持默认配置,点击下一步. 在Grou ...

  4. 实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错

    摘要:在SpringBoot运行测试Mybatis-Plus测试的时候报错的问题分析与修复 本文分享自华为云社区<SpringBoot整合MybatisPlus项目存在Mapper时运行报错的问 ...

  5. 使用SpringBoot整合ssm项目

    SpringBoot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. Spring Boot 现在已经成为Java ...

  6. SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例

    SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例 这是一个简单的SpringBoot整合实例 这里是项目的结构目录 首先是pom.xml ...

  7. 基于springboot的web项目最佳实践

    springboot 可以说是现在做javaweb开发最火的技术,我在基于springboot搭建项目的过程中,踩过不少坑,发现整合框架时并非仅仅引入starter 那么简单. 要做到简单,易用,扩展 ...

  8. SpringBoot系列之集成Mybatis教程

    SpringBoot系列之集成Mybatis教程 环境准备:IDEA + maven 本博客通过例子的方式,介绍Springboot集成Mybatis的两种方法,一种是通过注解实现,一种是通过xml的 ...

  9. SpringBoot 2.X整合Mybatis

    1.创建工程环境 勾选Web.Mybatis.MySQL,如下 依赖如下 <dependency> <groupId>org.springframework.boot</ ...

随机推荐

  1. 解决yum安装mysql时Requires: libc.so.6(GLIBC_2.17)(64bit)

    1.yum install mysql-community-server 1 2 3 4 5 6 7 Error: Package: mysql-community-libs-5.7.17-1.el7 ...

  2. 【python小练】0005

    第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小. 首先,iphone5的分辨率是1136x640. if条件句判断横(纵)向是否大于对应的ipho ...

  3. AspectJ开发

    aspectJ 是基于java语言的aop框架,提供了强大的aop功能. aspectJ的实现主要有两种,一种是基于xml的声明式aspectJ,另一种是基于注解的aspectJ. 1.基于xml的声 ...

  4. DEA和模糊综合评价

    DEA(包络分析) 1.概念 利用多项投入指标和产出指标,利用线性规划的方法,对具有可比性的同类型单位进行有效性评价的一种数量分析方法.以效率的概念作为加总模式,效率等于总产出除以总投入,并以效率最大 ...

  5. webpack设置热更新

    首先需要在package.json中配置一个脚本参数 --hot "dev": "webpack-dev-server --mode development --hot& ...

  6. 4-13 object类,继承和派生( super) ,钻石继承方法

    1,object 类 object class A: ''' 这是一个类 ''' pass a = A() print(A.__dict__) # 双下方法 魔术方法 创建一个空对象 调用init方法 ...

  7. python的基础初始第二天

    1.基础数据类型初始 1,数字类型,int,用于计算,+ ,- ,*, /,加,减,乘,除.在python2有整型和长整型之分(3344L),在python3 已经不区分了. 2,字符串类型strin ...

  8. 【转载】java abstract class和interface的区别

    转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...

  9. 创建 Pull Request

    Pull Request 是开发者使用 GitHub 进行协作的利器.这个功能为用户提供了友好的页面,让提议的更改在并入官方项目之前,可以得到充分的讨论. 最简单地来说,Pull Request 是一 ...

  10. google 开源项目阅读计划

    1. glog 2. gflags 3. carto 4. ...