第一部分:基本实现

@参考文章,在此基础上略作修改

1,新建maven项目JavaMybatis导入依赖

<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
</dependencies>

2,com.mybatis包下新建Yanan.java

package com.mybatis;

public class Yanan {
private int iid;
private String ifullname;
private String iloginname;
private String ipassword; public Yanan() {
} public Yanan(int id, String name) {
this.iid = id;
this.ifullname = name;
} public String getIfullname() {
return ifullname;
} public int getIid() {
return iid;
} public void setIid(int iid) {
this.iid = iid;
} public void setIfullname(String ifullname) {
this.ifullname = ifullname;
} public String getIloginname() {
return iloginname;
} public void setIloginname(String iloginname) {
this.iloginname = iloginname;
} public String getIpassword() {
return ipassword;
} public void setIpassword(String ipassword) {
this.ipassword = ipassword;
}
}

3,根目录下新建Yanan.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="Yanan">
<select id="selectUser" parameterType="int" resultType="Yanan">
SELECT * FROM Yanan WHERE id = #{id}
</select> <select id="selectUsers" resultType="Yanan">
SELECT * FROM Yanan
</select> </mapper>

4,根目录下新建configuration.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>
<typeAliases>
<typeAlias alias="Yanan" type="com.mybatis.Yanan"></typeAlias>
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=test" />
<property name="username" value="sa" />
<property name="password" value="yanan" />
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="Yanan.xml"/>
</mappers> </configuration>

5.com.controller包下新建测试文件

package com.controller;

import java.io.IOException;
import java.io.Reader;
import java.util.List; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.mybatis.Yanan; public class Test { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String resource = "configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = ssf.openSession();
try{
Yanan user = session.selectOne("selectUser", 1);
System.out.println(user.getIfullname());
System.out.println(user);
System.out.println("--------------分隔线---------------"); List<Yanan> users = session.selectList("selectUsers");
for(int i=0; i<users.size(); i++) {
System.out.println(users.get(i).getIfullname());
} } catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
} }

源码包下载:JavaMybatis.rar

建表语句:

/*
Navicat SQL Server Data Transfer Source Server : .
Source Server Version : 105000
Source Host : .:1433
Source Database : test
Source Schema : dbo Target Server Type : SQL Server
Target Server Version : 105000
File Encoding : 65001 Date: 2018-09-04 13:49:17
*/ -- ----------------------------
-- Table structure for yanan
-- ----------------------------
DROP TABLE [dbo].[yanan]
GO
CREATE TABLE [dbo].[yanan] (
[id] int NOT NULL IDENTITY(1,1) ,
[ifullname] varchar(255) NULL ,
[iloginname] varchar(255) NULL ,
[ipassword] varchar(255) NULL
) GO -- ----------------------------
-- Records of yanan
-- ----------------------------
SET IDENTITY_INSERT [dbo].[yanan] ON
GO
INSERT INTO [dbo].[yanan] ([id], [ifullname], [iloginname], [ipassword]) VALUES (N'', N'sd', N'fd', N'sd')
GO
GO
SET IDENTITY_INSERT [dbo].[yanan] OFF
GO -- ----------------------------
-- Indexes structure for table yanan
-- ---------------------------- -- ----------------------------
-- Primary Key structure for table yanan
-- ----------------------------
ALTER TABLE [dbo].[yanan] ADD PRIMARY KEY ([id])
GO

项目结构展示:

第二部分:改造优化

上述方式能实现,但需要建实体类,影响开发和维护效率,下面改造成接口形式且无实体类方式:

为了便于区分(也便于我接下来的项目),把名称结构等做了修改

1,同上(项目名DeleteOrder)

2,cn.yanan.deleteorder.mapper下新建UserMapper接口

package cn.yanan.deleteorder.mapper;

import java.util.List;
import java.util.Map; public interface UserMapper {
Map<String,Object> selectUser(int id);
List<Map<String,Object>> selectUsers();
}

3,根目录下新建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="cn.yanan.deleteorder.mapper.UserMapper">
<select id="selectUser" parameterType="int" resultType="java.util.Map">
SELECT * FROM Yanan WHERE id = #{id}
</select> <select id="selectUsers" resultType="java.util.Map">
SELECT * FROM Yanan
</select> </mapper>

4,根目录下新建configuration.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=test" />
<property name="username" value="sa" />
<property name="password" value="yanan" />
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="UserMapper.xml"/>
</mappers> </configuration>

5,cn.yanan.deleteorder.controller包下新建测试文件

package cn.yanan.deleteorder.controller;

import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import cn.yanan.deleteorder.mapper.UserMapper; public class MainController {
public static void main(String[] args) throws IOException {
String resource = "configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = ssf.openSession();
try{
UserMapper mapper = session.getMapper(UserMapper.class);
Map<String,Object> user = mapper.selectUser(1);
List<Map<String,Object>> users = mapper.selectUsers();
System.out.println(user.get("ifullname"));
System.out.println(user);
System.out.println("--------------分隔线---------------");
for(int i=0; i<users.size(); i++) {
System.out.println(users.get(i).get("ifullname"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
}
}

源码包下载:DeleteOrder.rar

建表语句:同上

项目结构展示:

第三部分:继续优化

经过第二部分的优化已经能满足大部分网友的需求了。但对于一些要将该项目导出可运行jar包的网友来说并不能很好地运行,摘自一位博客的说法:

“因为”…/ResourceJar.jar!/resource/….”并不是文件资源定位符的格式 (jar中资源有其专门的URL形式: jar:!/{entry} )”,详细论述@参考博客

所以我们使用如下的方式:

InputStream is=MainController.class.getResourceAsStream("/configuration.xml");
BufferedReader br=new BufferedReader(new InputStreamReader(is));

经过上述步骤你会发现在eclipse下能够正常运行,但jar包还不能加载到配置文件,我们继续进行改造

src同目录下建资源包,并把配置文件拖拽进去,结构如下(上述.getResourceAsStream("/configuration.xml")配置不变)

如此,eclipse中与jar包中都能加载到配置文件了。但此时你会发现新的异常,加载不到configuration中的mapper.xml文件

我们继续改造,打开configuration.xml进行配置

并将此二者拖拽到configuration.xml同目录下:

至此,大事告成!

此时博主已整合了大量项目业务,不便将源码包发给大家,思路有了,我也写的很清晰,读者自行整理吧

纯java+maven+sqlserver使用mybatis的更多相关文章

  1. 纯JAVA驱动:sqlserver版本不同,驱动与连接也有所区别

    纯JAVA驱动:// 2005 版本:驱动:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");连接:”jd ...

  2. Hibernate从入门到上手(纯java project、Maven版本hibernate)

    Hibernate(orm框架)(开放源代码的对象关系映射框架) Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一 ...

  3. 这一次,我连 web.xml 都不要了,纯 Java 搭建 SSM 环境!

    在 Spring Boot 项目中,正常来说是不存在 XML 配置,这是因为 Spring Boot 不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java 配置来搭 ...

  4. Spring Boot2 系列教程(一)纯 Java 搭建 SSM 项目

    在 Spring Boot 项目中,正常来说是不存在 XML 配置,这是因为 Spring Boot 不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java 配置来搭 ...

  5. Maven构建SpringMVC+Mybatis项目

    1.创建Maven项目时,起始是没有src/main/java.src/test/java.src/test/resources,需要修改一些配置之后,自动就会创建出来: 2.开始引入Spring+M ...

  6. 疑惑的 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L

    在MAVEN项目里面,在整合spring和mybatis在执行数据库操作的时候报出了: java.lang.AbstractMethodError: org.mybatis.spring.transa ...

  7. 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建

    基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 前言 最近做回后台开发,重新抓起以前学过的SSM(Spring+Sp ...

  8. 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

    经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...

  9. Cause: java. lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseInsertProvider

    相信现在Java Web开发都是用的mybatis吧,而用到mybatis很多人都不会错过通用mapper吧! (纯属瞎扯淡...qwq). 如我上一篇博客所写,目前公司新项目,使用了通用mapper ...

随机推荐

  1. MVC模式的原理

    说说MVC模式的原理,Android SDK 中有哪些组件使用到了MVC模式,其基本原理是什么?[国内某著名软件外包公司 2010 年面试题] 答案:MVC 的基本原理就是通过Controller 连 ...

  2. Linux系统基础5周入门精讲(Linux发展过程)

    什么是操作系统 作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必须运行于操作系统之上,操作系统则运行于硬件之上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,由 ...

  3. Django 之Form

    具体可参考:http://www.liujiangblog.com/course/django/153 https://www.cnblogs.com/liuguniang/p/7141837.htm ...

  4. MethodInfo类的一般使用

    1.MethodInfo类是在System.Reflection命名空间底下,既然是在Reflection空间底下.故名思议关于反射相关的操作,其中比较重要的方法是Invoke()方法,它 是加载相同 ...

  5. Dictionary,hashtable, stl:map有什么异同?

    相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采用传统的哈希算法:探测散列算法,而字典则采用的是散列拉链算法,效率较高, ...

  6. unzip解压带密码的压缩包

    // 解压 String pw = "123456"; String cmd = "unzip -P " + pw + " /root/lianlia ...

  7. Kotlin语言学习笔记(1)

    fun main(args: Array<String>) { println("Hello, World!") } 基本语法 声明常量用val,声明变量用var,声明 ...

  8. 配置nginx实现windows/iis应用负载均衡(转载)

    配置nginx实现windows/iis应用负载均衡   nginx是俄罗斯人开发的一款跨平台的高性能HTTP和反向代理服务器,可以利用它实现web应用服务器的负载均衡. 反向代理是指将用户请求通过代 ...

  9. 2018软件工程W班助教小结博客

    一.总体回顾 我是汪老师实验室的研二的一名研究生,在研一的课程中就上过老师带的高级软件工程(采取的模式是一样的,亲身经历了一学期所以对整体流程比较清楚).实验室的学生当老师实践课的助教是这几年流传下来 ...

  10. ArcGIS案例学习笔记-栅格数据分区统计(平均高程,污染浓度,污染总量,降水量)

    ArcGIS案例学习笔记-栅格数据分区统计(平均高程,污染浓度,污染总量,降水量) 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:针对栅格数据,利用多边形面要 ...