純java+maven+sqlserver使用mybatis


第一部分:基本實現

@參考文章,在此基礎上略作修改

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>
View Code

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;
    }
}
View Code

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>
View Code

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>
View Code

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();    
        }    
    }

}
View Code

源碼包下載: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
View Code

 

項目結構展示:

 

 

第二部分:改造優化

上述方式能實現,但需要建實體類,影響開發和維護效率,下面改造成接口形式且無實體類方式:

為了便於區分(也便於我接下來的項目),把名稱結構等做了修改

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();
}
View Code

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>
View Code

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>
View Code

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();    
        }    
    }
}
View Code

 

源碼包下載: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同目錄下:

至此,大事告成!

此時博主已整合了大量項目業務,不便將源碼包發給大家,思路有了,我也寫的很清晰,讀者自行整理吧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM