Mybatis 入門之MyBatis環(huán)境搭建(第一篇)
Mybatis簡(jiǎn)介
MyBatis的前身叫iBatis,本是apache的一個(gè)開(kāi)源項(xiàng)目, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis。
MyBatis是支持普通SQL查詢,存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plan Old Java Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。
下面分步驟給搭建介紹mybatis 環(huán)境搭建。
1)在工程下引入mybatis-3.4.1.jar包,再引入數(shù)據(jù)庫(kù)(mysql,mssql..)包.
2)在src下新建一個(gè)配置文件conf.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>
<!-- 引入外部配置文件 -->
<properties resource="jdbc.properties" />
<!-- 配置mybatis運(yùn)行環(huán)境 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表使用JDBC的提交和回滾來(lái)管理事務(wù) -->
<transactionManager type="JDBC" />
<!-- mybatis提供了3種數(shù)據(jù)源類型,分別是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC數(shù)據(jù)源連接池 -->
<!-- UNPOOLED 表示不支持?jǐn)?shù)據(jù)源連接池 -->
<!-- JNDI 表示支持外部數(shù)據(jù)源連接池 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userMapper.xml"/>
</mappers>
</configuration>
這里是通過(guò)外部配置文件來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)存信息的,所以加入一個(gè)jdbc.properties的數(shù)據(jù)庫(kù)存信息
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver url=jdbc:sqlserver://127.0.0.1;databaseName=test username=sa password=123456
3)建立一個(gè)映射文件 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="hw.com.ser.IUser">
<!-- 查詢?nèi)坑脩?-->
<select id="queryUsers" resultType="hw.com.pojo.User">
select * from MS_User
</select>
<selectid="queryUserById" resultType="hw.com.pojo.User" parameterType="int">
Select * From Ms_User Where id=#{id}
</select>
</mapper>
(這里要注意的是,namespace屬性,因?yàn)椋藢?shí)例是通過(guò)接口映射的方式,所以,namespace屬性一點(diǎn)要寫(xiě)成接口的路徑)附圖:

4)建一個(gè)映射接口類
package hw.com.ser;
import java.util.List;
import hw.com.pojo.User;
public interface IUser {
public List<User> queryUsers();
public User queryUserById(int id);
}
5)建立一個(gè)SqlSessionFactory
package hw.com.util;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Properties;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlSessionFactoryUtil {
private static SqlSessionFactory sqlSessionFactory = null;
private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
private SqlSessionFactoryUtil() {
}
public static SqlSessionFactory initSqlSessionFactory() {
String resource = "conf.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
synchronized (CLASS_LOCK) {
if (sqlSessionFactory == null) {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
}
return sqlSessionFactory;
}
public static SqlSession openSqlSession(){
if(sqlSessionFactory==null){
initSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
}
6)建一個(gè)pojo
package hw.com.pojo;
import java.util.Date;
public class User {
private String Id;
private String UserName;
private String UserPwd;
private int DeptmentId;
private String UserTrueName;
private String Email;
private int LearnCenterId;
private Date CreateDate;
private Date LastModifyDate;
private int UserStatus;
public User() {
super();
// TODO Auto-generated constructor stub
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserPwd() {
return UserPwd;
}
public void setUserPwd(String userPwd) {
UserPwd = userPwd;
}
public int getDeptmentId() {
return DeptmentId;
}
public void setDeptmentId(int deptmentId) {
DeptmentId = deptmentId;
}
public String getUserTrueName() {
return UserTrueName;
}
public void setUserTrueName(String userTrueName) {
UserTrueName = userTrueName;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public int getLearnCenterId() {
return LearnCenterId;
}
public void setLearnCenterId(int learnCenterId) {
LearnCenterId = learnCenterId;
}
public Date getCreateDate() {
return CreateDate;
}
public void setCreateDate(Date createDate) {
CreateDate = createDate;
}
public Date getLastModifyDate() {
return LastModifyDate;
}
public void setLastModifyDate(Date lastModifyDate) {
LastModifyDate = lastModifyDate;
}
public int getUserStatus() {
return UserStatus;
}
public void setUserStatus(int userStatus) {
UserStatus = userStatus;
}
@Override
public String toString() {
return "User [Id=" + Id + ", UserName=" + UserName + ", UserPwd=" + UserPwd + ", DeptmentId=" + DeptmentId
+ ", UserTrueName=" + UserTrueName + ", Email=" + Email + ", LearnCenterId=" + LearnCenterId
+ ", CreateDate=" + CreateDate + ", LastModifyDate=" + LastModifyDate + ", UserStatus=" + UserStatus
+ "]";
}
}
7) 在main方法下做測(cè)試
package hw.com.Day1.main;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import hw.com.pojo.User;
import hw.com.ser.IUser;
import hw.com.util.SqlSessionFactoryUtil;
public class UserTest {
public static void main(String[] args) {
SqlSession sqlSession=null;
try {
sqlSession=SqlSessionFactoryUtil.openSqlSession();
IUser iUser=sqlSession.getMapper(IUser.class);
List<User> users=iUser.queryUsers();
if(users.size()>0){
for (User user : users) {
System.out.println(user.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
到此這篇關(guān)于Mybatis 入門之MyBatis環(huán)境搭建(第一篇)的文章就介紹到這了,更多相關(guān)Mybatis 環(huán)境搭建入門內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot RabbitMQ 消息隊(duì)列使用示例詳解
本文通過(guò)示例代碼介紹了Springboot RabbitMQ 消息隊(duì)列使用,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨小編一起看看吧2024-06-06
關(guān)于Feign的覆寫(xiě)默認(rèn)配置和Feign的日志
這篇文章主要介紹了關(guān)于Feign的覆寫(xiě)默認(rèn)配置和Feign的日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Spring @Retryable注解輕松搞定循環(huán)重試功能
spring系列的spring-retry是另一個(gè)實(shí)用程序模塊,可以幫助我們以標(biāo)準(zhǔn)方式處理任何特定操作的重試。在spring-retry中,所有配置都是基于簡(jiǎn)單注釋的。本文主要介紹了Spring@Retryable注解如何輕松搞定循環(huán)重試功能,有需要的朋友可以參考一下2023-04-04
關(guān)于Java實(shí)現(xiàn)HttpServer模擬前端接口調(diào)用
這篇文章主要介紹了關(guān)于Java實(shí)現(xiàn)Http?Server模擬前端接口調(diào)用,Http?協(xié)議是建立在?TCP?協(xié)議之上的協(xié)議,所以能用?TCP?來(lái)自己模擬一個(gè)簡(jiǎn)單的?Http?Server?當(dāng)然是可以的,需要的朋友可以參考下2023-04-04
SpringMVC+EasyUI實(shí)現(xiàn)頁(yè)面左側(cè)導(dǎo)航菜單功能
這篇文章主要介紹了SpringMVC+EasyUI實(shí)現(xiàn)頁(yè)面左側(cè)導(dǎo)航菜單功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

