springMVC连接数据库
- 引入依赖
- 配置spring-config.xml
- 查询数据
本文记录spring-boot连接数据库的依赖及配置,
其中${}引用的内容表示根据自身情况改变的值
引入依赖
1. mysql驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.24</version>
</dependency>
2. c3p0连接池
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.1</version>
</dependency>
3. mybatis
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
4. mybatis-plus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.0.3</version>
</dependency>
5. mybatis-plus-core
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>3.0.3</version>
</dependency>
配置spring-config.xml
1. 数据库连接池
<bean id="mysqlDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destory-method="close">
</bean>
- c3p0-config.xml配置文件
<c3p0-config>
<default-config>
<property name="user">admin</property>
<property name="password">123456</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/${dbName}?useUnicode=true&characterEncoding=utf-8</property>
<property name="initialPoolSize">3</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">600</property>
<property name="minPoolSize">3</property>
<property name="maxStatementsPerConnection">10</property>
</default-config>
</c3p0-config>
2. mapper扫描配置
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="${mapper接口所在文件夹的路径}"></property> //在下面例子中值为:com.test.db.mapper
<property name="sqlSessionFactoryBeanName" value="mySqlSessionFactory"></property>
</bean>
3. MySql会话工厂
<bean id="mySqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactotyBean">
<property name="dataSource" value="mysqlDataSource"></property>
<property name="configLocation" value="classpath:${mybatis配置文件的路径}"></property> //在下面例子中值为:config/mybatis-config.xml
<property name="mappersLocations" value="classpath:${sql语句xml文件路径}"></property> //在下面例子中值为:mybatisMapper/*.xml
<property name="typeAliasesPackage" value="${模型类所在文件夹的路径}"></property> //在下面例子中值为:com.test.db.model
</bean>
- mybatis配置文件,路径:resources文件夹下,config/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>
<!-- 属性配置 -->
<!-- 优先级:方法参数传递 > resource/url 属性中指定的配置文件 > 属性中指定的属性property -->
<properties resource="conf/database.properties">
<property name="jdbc.username" value="zou" />
<property name="jdbc.password" value="******" />
</properties>
<!-- 调整设置,它们会改变 MyBatis 的运行时行为 -->
<settings>
<!-- 全局的映射器开启或禁用缓存 (默认true) -->
<setting name="cacheEnabled" value="true" />
<!-- 全局开启或管理延迟加载。当开启时,所有关联对象都会延迟加载 (默认false) -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载 (默认false) -->
<setting name="aggressiveLazyLoading" value="true"/>
<!-- 允许单一sql语句返回多结果集 (默认true) -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 使用列标签代替列名 (默认true) -->
<setting name="useColumnLabel" value="true" />
<!-- 允许 JDBC 支持自动生成主键 (默认false) -->
<setting name="useGeneratedKeys" value="false" />
<!-- 指定 MyBatis 应如何自动映射列到字段或属性,NONE:不隐射 PARTIAL:部分 FULL:全部 (默认PARTIAL) -->
<setting name="autoMappingBehavior" value="PARTIAL" />
<!-- 配置默认的执行器, SIMPLE:普通; REUSE: 执行器会重用预处理语句(prepared statements); BATCH:执行器将重用语句并执行批量更新。-->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 超时时间 -->
<setting name="defaultStatementTimeout" value="25" />
<!-- 为驱动的结果集获取数量(fetchSize)设置一个提示值 -->
<setting name="defaultFetchSize" value="100" />
<!-- 允许在嵌套语句中使用分页,如果允许使用则设置为false (默认false) -->
<setting name="safeRowBoundsEnabled" value="false" />
<!-- 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。(默认false) -->
<setting name="mapUnderscoreToCamelCase" value="false" />
<!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
<setting name="localCacheScope" value="SESSION" />
<!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
<setting name="jdbcTypeForNull" value="OTHER" />
<!-- 指定哪个对象的方法触发一次延迟加载 -->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
</settings>
<!-- 类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余 -->
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author" />
<typeAlias alias="Section" type="domain.blog.Section" />
<typeAlias alias="Tag" type="domain.blog.Tag" />
<!-- 也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean -->
<!-- 会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author -->
<package name="domain.blog"/>
</typeAliases>
<!-- 类型处理器 -->
<typeHandlers>
<typeHandler handler="org.mybatis.example.ExampleTypeHandler"/>
</typeHandlers>
<!-- 插件 -->
<plugins>
<plugin interceptor="org.mybatis.example.ExamplePlugin">
<property name="someProperty" value="100"/>
</plugin>
</plugins>
<!-- 环境配置:事务管理器和数据源配置 -->
<!-- 尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一 -->
<environments default="development">
<environment id="development">
<!-- JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置 -->
<transactionManager type="JDBC" />
<!-- POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!-- 插件 -->
<plugins>
<plugin interceptor="org.mybatis.example.ExamplePlugin">
<property name="someProperty" value="100" />
</plugin>
</plugins>
<!-- 映射器 -->
<mappers>
<!-- 使用相对于类路径的资源引用 -->
<mapper resource="com/brave/dao/mapper/UpmsUserMapper.xml" />
<!-- 使用完全限定资源定位符(URL) -->
<mapper url="file:///var/mappers/PostMapper.xml"/>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mapper class="org.mybatis.builder.PostMapper"/>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<package name="org.mybatis.builder"/>
</mappers>
</configuration>
查询数据
1. MySql模型类
package com.test.db.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
@TableName("t_user")
@Getter @Setter
public class UserMO {
private Integer id;
private String name;
}
2. Mapper接口
- Mapper接口要继承BaseMapper接口
package com.test.db.mapper;
import com.test.db.model.UserMO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<UserMO> {
UserMO selectUserById(Integer id);
}
3. mybatis-mapper文件
- 文件路径:resources文件夹下,mybatisMapper/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.test.db.mapper.UserMapper">
<select id="selectUserById" resultType="com.test.db.model.UserMO">
select * from t_user;
</select>
</mapper>
4. 调用mapper接口查询数据
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring-config.xml")
public class TestMain {
@Autowired
UserMapper userMapper;
@Test
public void doTest() {
UserMO user = userMapper.selectUserById(1);
}
}