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 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

c#实现打印功能

2622
来自专栏魂祭心

原 canvas绘制clock

4024
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

2908
来自专栏飞扬的花生

jsencrypt参数前端加密c#解密

      写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度...

3859
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2527
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

3955
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2625
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2000
来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4054

扫码关注云+社区