J2ee项目从0搭建(七):集成Mybatis、mybatis-generator代码生成、MySQL数据库
2016-06-07 00:10
567 查看
一、思路:Spring集成Mybatis,连接MySQL数据库,并利用mybatis-generator自动生成Dao、Model、Mapping。
二、pom.xml配置文件中:<dependencies>中我们需要配置mybatis、mysql-connector-java依赖;并在<build>下的<plugins>标签中配置mybatis-generator-maven-plugin插件。
<span style="white-space:pre"> </span><!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.0</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
<span style="white-space:pre"> </span><plugins> <!-- mybatis 代码自动生成 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.0</version> </plugin> </plugins>
三、定义好MySQL的数据库参数:驱动名、地址、用户名、密码等;我们再src/main/resources下创建application.properties
#mysql database setting jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull jdbc.username=root jdbc.password=xxxxxx #connection pool settings jdbc.pool.maxIdle=10 jdbc.pool.maxActive=40
四、还在此目录下创建spring-mybatis.xml配置文件,使用<context:property-placeholder>引入上面定义好的属性配置文件,并配置一个DataSource bean,mysql就配置好了。
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 引入属性配置文件 --> <context:property-placeholder ignore-unresolvable="true" location="classpath*:/application.properties" /> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> <!-- 数据库信息 --> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 链接池信息:最大活跃数、最大空闲数 --> <property name="maxActive" value="${jdbc.pool.maxActive}" /> <property name="maxIdle" value="${jdbc.pool.maxIdle}" /> <property name="defaultAutoCommit" value="false" /> <!-- 连接Idle一个小时后超时(配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="3600000" /> <property name="minEvictableIdleTimeMillis" value="3600000" /> <!-- 验证连接有效与否的SQL,不同的数据配置不同 --> <!-- 用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。 推荐使用SELECT 1--> <property name="validationQuery" value="SELECT 1" /> <!-- 这里建议配置为TRUE,防止取到的连接不可用 --> <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 --> <property name="testOnBorrow" value="true" /> <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 --> <property name="testOnReturn" value="true" /> <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效 --> <property name="testWhileIdle" value="true" /> </bean> </beans>
五、我们用mybatis-generator自动生成Dao、Model、Mapping,所以仍然在此目录下创建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"> <!-- 在项目根目录下(pom.xml同级)打开命令行工具:mvn mybatis-generator:generate --> <generatorConfiguration> <!-- 配置成你本地的mysql-connector-java jar --> <classPathEntry location="D:\GBJ_learning\Maven\maven\mysql\mysql-connector-java\5.1.21\mysql-connector-java-5.1.21.jar" /> <context id="baseTradeTables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- 数据库地址、用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://xxx.xxx.xxx.xxx:3306/test" userId="xxx" password="xxx"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="true" /> </javaTypeResolver> <!-- 后台生成 --> <!-- model --> <javaModelGenerator targetPackage="com.spring.demo.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- Mapper映射 --> <sqlMapGenerator targetPackage="mybatis" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- Mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.spring.demo.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 表 --> <table tableName="user" /> </context> </generatorConfiguration>
六、mybatis-generator配置好之后,我们就来自动生成一下user表的dao、model、mapping:在项目目录下(pom.xml)打开命令行工具,输入mvn mybatis-generator:generate,第一次的话,如果缺少某些依赖jar的话可能需要花点时间。
七、BUILD SUCCESS之后,刷新项目后,就能发现自动生成的文件了。
八、离实际的使用,我们还缺少一些依赖jar和配置:
pom.xml中:加入以下依赖<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency>
spring-mybatis.xml中,将自动生成的dao和mapping进行配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 --> <property name="typeAliasesPackage" value="com.spring.demo.model" /> <!-- 显式指定Mapper文件位置 --> <property name="mapperLocations" value="classpath:/mybatis/*.xml" /> </bean> <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.spring.demo.dao" /> </bean>
九、测试Spring MVC、Mybatis、MySQL及mybatis-generator自动生成的代码是否正确,我们测试从user表中读取name=li的年纪age是多大。直接上代码:
AgeController.javapackage com.spring.demo.mvc; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.spring.demo.dao.UserMapper; import com.spring.demo.model.User; @Controller @RequestMapping("/mvc") public class AgeController { @Autowired private UserMapper userMapper; @RequestMapping("/age") public String age(@RequestParam(value = "name", required = false, defaultValue = "World") String name, Model model) { //通过name查询user对象 User user = userMapper.selectByPrimaryKey(name); if(null != user){ model.addAttribute("name", user.getName()); model.addAttribute("age", user.getAge()+""); } return "/demo/age"; } }
age.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Insert title here</title> </head> <body> Hello,name is ${name}, age=${age}! </body> </html>
效果:
十、为了便于大家学习,项目被开源在我的github上:
项目地址:https://github.com/gubaijin/buildmavenweb
如何将项目开源道github,请看我的另一篇博文:GitHub上创建项目 并初始化本地工程提交到GitHub上
相关文章推荐
- MySQL 的日常使用
- Xtrabackup实现MySQL每天自动热备
- MySQL管理一些基础SQL语句
- MySql-主从复制
- Spark(九):Spark SQL访问Hive,MySQL
- MySql优化的一般步骤
- Mysql表操作和 DECIMAL(N,M)数据类型
- lnmp 忘记mysql密码
- mysql查询优化
- mysql单机多实例
- mysql中创建字符集为utf-8的数据库
- MySQL数据库mysqlcheck的使用方法
- 安装MySQL5.5的错误Error Nr.1045解决方案
- Ubuntu mysql安装,还有可视化界面
- center os 安装mysql5.6
- MySQL 开启远程访问
- mysql一些使用技巧
- mysql常用基础操作语法(一)~~对库的操作【命令行模式】
- mysql导sql文件
- mySql存储过程中用到的时间函数