Spring+Mybatis+Maven+Mysql编程实战
封面是Niagara Falls,世界第一大瀑布。
概述
这篇文章主要讲解使用eclipse对Spring+Maven+Mybatis+Mysql项目搭建过程以及简单实战展示,对于eclipse的Maven配置以及Mysql的安装这里就不做介绍了,大家可以在百度上找找。
1.1 数据库表创建
CREATE TABLE student(
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
PRIMARY KEY (ID)
);
1.2 项目创建
- Maven工程创建
2.选择快速框架
3.输出项目名,包(Packaging,如果只是普通的项目,选jar就好了,如果是web项目就选war,这里是web项目,所以选择war)
4.创建好的项目目录如下:
1.3 pom.xml配置依赖包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sun</groupId> <artifactId>springMybatisTest</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <!-- spring版本号 --> <spring.version>4.1.6.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.8</mybatis.version> </properties> <dependencies> <!-- 添加Spring依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!--mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.18</version> </dependency> <!-- dbcp数据库连接池 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> </dependencies> </project> |
---|
该pom.xml中已经标注了较清晰的注释,这里就不在详述了。
1.4 配置文件解析
(1) spring配置文件application.xml:
<!-- 数据库连接以及数据库连接池配置--> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://10.168.175.14:3306/test"/> <property name="username" value="test"/> <property name="password" value="123"/> <property name="initialSize" value="3"/> </bean> <!-- mybatis config --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis/MybatisConfig.xml"></property> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <!-- database Dao config --> <bean id="daoImpl" class="com.sun.dao.DaoImpl"> <property name="sqlSession" ref="sqlSession" /> </bean> |
---|
(2) mybatis包下添加MybatisConfig.xml文件(mybatis配置文件):
<?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> <typeAliases> <typeAlias alias="Student" type="com.sun.entity.Student" /> </typeAliases> <mappers> <mapper resource="mapper/StudentMapper.xml"/> </mappers> </configuration> |
---|
(3) mapper包下StudentMapper.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="mapper.StudentMapper"> <!--配置一个resultMap 指定返回的类型 --> <resultMap id="studentMap" type="Student"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> </resultMap> <!-- 返回一个list的写法 --> <select id="listStudents" resultMap="studentMap" > select * from student </select> <select id="getStudent" parameterType="int" resultType="Student"> SELECT * FROM student WHERE id=#{id} </select> <insert id="insertStudent" parameterType="Student" flushCache="true"> INSERT INTO student (id,name,age) VALUES (#{id},#{name},#{age}) </insert> <update id="updateStudent" parameterType="Student"> UPDATE student SET age=#{age} WHERE id=#{id} </update> <delete id="deleteStudent" parameterType="int"> DELETE FROM student WHERE id=#{id} </delete> <delete id="deleteAllStudents"> DELETE FROM student </delete> </mapper> |
---|
1.5 接口和类介绍
(1) Dao.java接口介绍
package com.sun.dao; import java.util.List; publicinterface Dao { public List<Object> query(String sql,Object obj); publicvoid update(String sql, Object obj); } |
---|
该接口只包括两个方法,一个query()用来做查询,另一个update()用来做insert/update/delete操作。
(2) 接口实现类DaoImpl.java
package com.sun.dao; import java.util.List; import org.apache.ibatis.session.SqlSession; publicclass DaoImpl implements Dao { private SqlSession sqlSession; public SqlSession getSqlSession() { returnsqlSession; } publicvoid setSqlSession(SqlSession sqlSession) { this.sqlSession = sqlSession; } public List<Object> query(String sql, Object obj) { // TODO Auto-generated method stub returnsqlSession.selectList(sql, obj); } publicvoid update(String sql, Object obj) { // TODO Auto-generated method stub sqlSession.update(sql,obj); } } |
---|
(3) 数据库表映射类Student.java
package com.sun.entity; publicclass Student { privateintid; private String name; privateintage; public Student() { } public Student(intid, String name, intage) { this.id = id; this.name = name; this.age = age; } publicint getId() { returnid; } publicvoid setId(intid) { this.id = id; } public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } publicint getAge() { returnage; } publicvoid setAge(intage) { this.age = age; } @Override public String toString() { return"student: [id=" + id + " name=" + name + " age=" + age + "]"; } } |
---|
该类只有属性定义与其相应的get与set方法,是与数据库中的student表的字段对应的。
1.6 测试类与运行结果
(1) 测试类Student.java
package com.sun.test; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sun.dao.DaoImpl; import com.sun.entity.Student; publicclass MybatisTest { publicstaticvoid main( String[] args ) { //获取一个Spring bean的方式 ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); //在代码中加载Spring配置文件 DaoImpl daoImpl = (DaoImpl) context.getBean("daoImpl"); //利用Spring注入DB Dao的一个实例 Student stu = new Student(1,"luotj",24); //构建Student对象 //将构建的student实例插入MySQL的student表中 System.out.println("Insert student:"); daoImpl.update("mapper.StudentMapper.insertStudent", stu); //取出student表中的数据 List<Object> students = daoImpl.query("mapper.StudentMapper.listStudents", null); for(Object student:students) System.out.println(student); //更新student表中的数据 System.out.println("update student:"); stu.setAge(26); daoImpl.update("mapper.StudentMapper.updateStudent", stu); //再次取出student表中的数据,查看更新结果 students = daoImpl.query("mapper.StudentMapper.listStudents", null); for(Object student:students) System.out.println(student); //删除student表中的数据 daoImpl.update("mapper.StudentMapper.deleteAllStudents", null); } } |
---|
(2) 运行结果
1.7 小结
这篇文章侧重介绍Spring+Maven+Mybatis+Mysql的实战过程,而且配置文件与代码以及测试类都尽数提供给大家参考;之所以这样做,是为了给大家提供一个基于Spring与Mybatis框架的数据库编程的快速入门实战。
先调通一个简单的项目再来学习项目里的框架比先学习个把月的框架基础知识再写一个简单的项目让人更舒畅。而且很多时候,我们并不需要过于的深入研究一个框架,通过一个简单的项目了解其基本的使用规则,也许也就够了。
- 【推荐】开源项目minapp-重新定义微信小程序的开发
- 【完结汇总】iKcamp出品基于Koa2搭建Node.js实战共十一堂课(含视频)
- hadoop性能调优
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 规范与部署
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理
- DiscuzX v3.4 任意文件删除漏洞
- 系列3|走进Node.js之多进程模型
- Java中Arraylist与linkedlist的区别
- 手把手教你撸一个 Webpack Loader
- HashMap与HashTable区别
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志
- React Native 网络层分析
- 如何实现VM框架中的数据绑定
- Java盲点解析
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Pycharm 一键加引号
- 单词搜索
- JVM运行时数据区
- 最长重复子数组
- 编辑距离
- 有序矩阵中第K小的元素
- nodejs库yaml读取yml或yaml配置文件
- 爬虫小白:03.requests的使用
- Oracle GoldenGate 19 Microservices数据同步实战与故障处理
- 给“小白”漫画+图示讲解MyBatis原理,就问香不香!
- webClientTest 编写单元测试类
- 关于gorm多表联合查询(left join)的小记
- UnicodeEncodeError: 'latin-1' codec can't encode character 'u2026' in position 30: ordinal not i...
- Oracle GoldenGate 19 Microservices完整高可用安装、配置与测试
- 爬虫小白:11.scrapy框架(六) _媒体管道