####1、配置 http://blog.csdn.net/gebitan505/article/details/54929287
- Pom加入配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!--数据库支持 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</build>
- 配置文件添加参数
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=utf-8
username: root
password: 630203
type: com.alibaba.druid.pool.DruidDataSource
- 配置数据库连接的一些参数
mybatis.type-aliases-package=com.example.login
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root
####2、使用数据库
- 定义Dao的mapper
第一种方式,直接在Mapper上面加Mapper注解,这样Spring就会把它加入到容器中
@Mapper
public interface LoginDao {
}
第二种方式,不加注解,在Application中指定Mapper包,以后这个包下的都会自动加入到Spring容器中
@SpringBootApplication
@MapperScan("com.example.juwnen")
public class MyApplication
}
- Sql语句的实现方法
第一种是直接在Mapper中的方法上直接写Sql语句
public interface LoginDao {
@Select("select * from UserTable")
List<UserEntity> queryUser();
}
第二种是通过Mapper映射到Mapper文件,在Mapper中进行填写Sql的实现
- 在Resources文件夹下创建mapper文件夹,创建对应Dao的mapper的xml。 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.example.test.demo.dao.AreaDao">
<select id="queryArea" resultType="com.example.test.demo.entity.Area">
SELECT *
FROM tb_area
ORDER BY priority
DESC
</select>
<select id="queryAreaById" resultType="com.example.test.demo.entity.Area">
SELECT *
FROM tb_area
WHERE area_id=#{areaId}
</select>
<!--useGeneratedKeys="true" 代表插入成功后会返回这条记录的id-->
<!--keyProperty="areaId" keyColumn="area_id 分别代表主键id和表中id的名字-->
<insert id="insertArea" useGeneratedKeys="true"
parameterType="com.example.test.demo.entity.Area" keyProperty="areaId" keyColumn="area_id">
INSERT INTO
tb_area(area_name,priority,create_time,last_edit_time)
VALUES
(#{areaName},#{priority},#{createTime},#{lastEditTime})
</insert>
<update id="updateArea" parameterType="com.example.test.demo.entity.Area">
UPDATE tb_area
<set>
<if test="areaName!=null">area_name=#{areaName},</if>
<if test="priority!=null">priority=#{priority},</if>
<if test="lastEditTime!=null">lastEditTime=#{lastEditTime},</if>
</set>
WHERE area_id=#{areaId}
</update>
<delete id="deleteArea">
DELETE FROM
tb_area
WHERE
area_id=#{areaId}
</delete>
</mapper>
- 并且在application.yml中配置这个mapper文件的路径
mybatis:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: com.example.demo
config-location: classpath:mybatis.xml
3 mapper文件中可以定义一些固定的常用名字
//定义表名
<sql id="tableName"> SYS_ADVERTSING </sql>
//引用表名
SELECT * FROM
<include refid="tableName"></include>
4 mapper返回类型
List< Map< String, Object > > (对应) resultType="java.util.HashMap"
List< String> (对应) parameterType="java.util.List"
<foreach item="userIds" collection="userIds" open="("
separator="," close=")">
#{userIds}
</foreach>
5 如果是多参数状态,没法指定入参的类型
//用注解方式指定别名
void updateAdvertsing( @Param( "advertsingId" ) String advertsingId, @Param( "updateParams" ) Map< String, Object > updateParams );
使用的时候,直接用别名
#{advertsingId}
#{updateParams.modifierId}
6 返回Boolean格式
<select id="ifExist" parameterType="string" resultType="boolean">
<![CDATA[ select count(id) from web_member where name = #{name} ]]>
</select>
7 遍历传入的Map对象,导入每一个set对象组合
<set>
<foreach collection="updateParams.entrySet()" index="key" item="value"
separator=",">
<if test="key != 'id'.toString()">
${key} = #{value}
</if>
</foreach>
</set>
8 使用like关键字
2. bind标签
<select id="selectPersons" resultType="person" parameterType="person">
<bind name="pattern" value="'%' + _parameter.username + '%'" />
select id,sex,age,username,password
from person
where username LIKE #{pattern}
</select>
9 插入list集合,批量insert into,想要批量insert into ,可以在Values后面的值,运用多个括号,,号分割,这样一条insert就可以插入多条
INSERT INTO
<include refid="tableName"></include>
(
EXPRESS_ID,
BRAND_ID,
BRAND_NAME,
CREATOR_ID,
CREATOR,
CREATE_TIME,
MODIFIER_ID,
MODIFIER,
MODIFY_TIME
)
VALUES
<foreach collection="userAppointExpressList" index="index"
item="item" separator=",">
(
#{item.expressId},
#{item.brandId},
#{item.brandName},
#{item.creatorId},
#{item.creator},
#{item.createTime},
#{item.modifierId},
#{item.modifier},
#{item.modifyTime}
)
</foreach>
10 格式化返回的时间格式
DATE_FORMAT(CREATE_TIME,'%Y-%m-%d %H:%i:%s') as createTime
####3 参考网站
Spring Boot + MyBatis + MySQL 整合
MyBatis官方网站 ####4 使用问题
1 遇到查询数据库的时候,表字段有下划线的字段查询不出来数据。
解决方法:配置MyBstis的全局配置,让他能够映射出字段
<?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>
<!-- 全局配置 -->
<settings>
<!--允许 JDBC 支持自动生成主键-->
<setting name="useGeneratedKeys" value="false" />
<!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典
Java 属性名 aColumn 的类似映射。 -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>