Spring boot 数据库配置之Mybaties+Mysql
说明:Mybaties+Mysql,两种方式注解、XML文件
配置介绍:
pom.xml配置:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
application.properties配置:
# \u5B9E\u4F53\u7C7B\u8DEF\u5F84
mybatis.type-aliases-package=com.hwlin.spring.boot.demo.domain
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.0.1:3308/hwlin_demo?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
Application.java注解:
@SpringBootApplication
@MapperScan("com.hwlin.spring.boot.demo.mapper")
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
一、注解方式
Mapper接口(数据层接口),通过注解方式实现与数据库交互,进行数据操作。
public interface UserMapper {
@Select("SELECT * FROM users")
@Results({ @Result(property = "userSex", column = "user_sex", javaType = UserSexEnum.class), @Result(property = "nickName", column = "nick_name") })
List<UserEntity> getAll();
@Select("SELECT * FROM users WHERE id = #{id}")
@Results({ @Result(property = "userSex", column = "user_sex", javaType = UserSexEnum.class), @Result(property = "nickName", column = "nick_name") })
UserEntity getOne(Long id);
@Insert("INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})")
void insert(UserEntity user);
@Update("UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}")
void update(UserEntity user);
@Delete("DELETE FROM users WHERE id =#{id}")
void delete(Long id);
}
说明:
@Select:用于查询数据
@Insert:用于插入数据
@Update:用于修改数据
@Delete:用于删除数据
二、XML配置方式
application.properties增加mybaties、mapper配置。
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis-config.xml配置:
<?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>
<!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
<setting name="localCacheScope" value="SESSION"/>
<!-- 使用全局的映射器启用或者禁用缓存。 -->
<setting name="cacheEnabled" value="true"/>
<!-- 全局启用或禁用延时加载,当禁用时,所有关联对象都会即时加载。 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 当启用时,有延时加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
<setting name="aggressiveLazyLoading" value="true"/>
<!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
<setting name="useColumnLabel" value="true"/>
<!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 -->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 这是默认的执行类型(SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新) -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 这使用驼峰命名法转换字段 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="String" type="java.lang.String" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
<typeAlias alias="Date" type="java.util.Date" />
</typeAliases>
</configuration>
*Mapper.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.hwlin.spring.boot.demo.mapper.LegalPersonInfoMapper">
<resultMap id="LegalPresonMap" type="com.hwlin.spring.boot.demo.domain.LegalPersonInfo">
<id column="lp_id" property="lpId"/>
<result column="lp_name" property="lpName"/>
<result column="insert_time" property="insertTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<sql id="templetes">
lp_id, lp_name, insert_time, update_time
</sql>
<select id="getAll" resultMap="LegalPresonMap">
SELECT <include refid="templetes"></include>
FROM legal_person_info
</select>
</mapper>
*Mapper接口实现:
接口方法名、传入参数、返回值,都根据*Mapper.xml配置的<select>、<update>、<insert>、<delete>进行定义,方法名必须与其id值一致。
public interface LegalPersonInfoMapper {
List<LegalPersonInfo> getAll();
}