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 项目创建

  1. 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框架的数据库编程的快速入门实战。

先调通一个简单的项目再来学习项目里的框架比先学习个把月的框架基础知识再写一个简单的项目让人更舒畅。而且很多时候,我们并不需要过于的深入研究一个框架,通过一个简单的项目了解其基本的使用规则,也许也就够了。

原文发布于微信公众号 - 大数据和云计算技术(jiezhu2007)

原文发表时间:2016-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

java的poi技术写Excel的Sheet

那么在Excel里面什么叫做Sheet呢?如下图红色框里面的内容就是Excel的Sheet了。

513
来自专栏流媒体人生

ATL源码学习4---TearOff接口支持

    http://download.csdn.net/source/1687116

702
来自专栏后端之路

SpringBoot结合LogBack打印Sql

背景 不同的profile下我们需要不同的配置 SpringBoot关于配置在profile玩的飞起 通常我们在开发或者测试环境下都会打开sql日志方便开发调试...

1.8K8
来自专栏偏前端工程师的驿站

MyBatis魔法堂:即学即用篇

一、前言                                          本篇内容以理解MyBatis的基本用法和快速在项目中实践为目的,...

1886
来自专栏Golang语言社区

Golang 语言调用动态库实现OpenGL及windows的API编程

最近晚上没有事情的时候,研究下了开源的walk-master源码,自己简单的分析了下,如果在 import ( "github.com/lxn/win...

27312
来自专栏令仔很忙

新手学JAVA(八)----走进JDBC

JDBC(Java Data Base Connectivity, Java 数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一...

691
来自专栏专注 Java 基础分享

初识Hibernate之继承映射

     前面的两篇文章中,我们介绍了两张表之间的各种相互关联映射关系,但往往我们也会遇到两张表甚至多张表之间共有着多个相同的字段。例如: ? 如图,stude...

1718
来自专栏Java 技术分享

JDBC(MySQL)一周学习总结(二)

36610
来自专栏名山丶深处

springboot集成jpa

1337
来自专栏木宛城主

工欲善其事,必先利其器:分享一套Code Smith 搭建N层架构模板

 开篇 平常开发时,由于冗余代码过多,程序员做重复的工作过多势必会影响开发效率。倘若对重复性代码简单的复制、粘贴,虽然也能节省时间,但也需仔细一步步替换,这无...

1728

扫描关注云+社区