第一部分:基本實現
@參考文章,在此基礎上略作修改
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'1', 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同目錄下:
至此,大事告成!
此時博主已整合了大量項目業務,不便將源碼包發給大家,思路有了,我也寫的很清晰,讀者自行整理吧