Mybatis 入门之MyBatis环境搭建(第一篇)
作者:lijianhua 发布时间:2023-03-15 16:09:32
标签:Mybatis,环境搭建,入门
Mybatis简介
MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。
下面分步骤给搭建介绍mybatis 环境搭建。
1)在工程下引入mybatis-3.4.1.jar包,再引入数据库(mysql,mssql..)包.
2)在src下新建一个配置文件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运行环境 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" />
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<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>
这里是通过外部配置文件来存储数据库存信息的,所以加入一个jdbc.properties的数据库存信息
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://127.0.0.1;databaseName=test
username=sa
password=123456
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="hw.com.ser.IUser">
<!-- 查询全部用户 -->
<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属性,因为,此实例是通过接口映射的方式,所以,namespace属性一点要写成接口的路径)附图:
4)建一个映射接口类
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)建立一个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)建一个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方法下做测试
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();
}
}
}
来源:http://www.cnblogs.com/lijianhua/archive/2016/12/20/6201158.html
0
投稿
猜你喜欢
- git仓库直达List<String> strings = Lists.newArrayList("name=kk&q
- 1.理解全过程1.1.概述需要具备的知识Socket网络编程反向代理的理解平滑加权轮询算法的理解线程池的理解目的:实现Socket 集群服务
- 1、注解是什么Java 注解用于为 Java 代码提供元数据,看完这句话也许你还是一脸懵逼,用人话说就是注解不直接影响你的代码执行,仅提供信
- 1概述众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统
- 1.新建文件上传页面在static目录中新建upload-test.html,上传页面代码如下所示:<!DOCTYPE html>
- 简介前提条件:确保本机已经安装 VS Code。确保本机已安装 SSH client, 并且确保远程主机已安装 SSH server。VSC
- ${project.basedir}的使用<project> 是 pom.xml 的根节点,project.basedir 就是
- 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运
- 什么是队列结构一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。分类:顺序队列结构链式队列结构基本操作:入队
- 在笔试编程过程中,关于数据的读取如果迷迷糊糊,那后来的编程即使想法很对,实现很好,也是徒劳,于是在这里认真总结了Java Scanner 类
- 最近开发项目中,有个在屏幕上任意拖动的悬浮窗功能,其实就是利用 WindowManager的api来完成这个需求,具体的实现的功能如下:1.
- 一般对于业务复杂的流程,会有一些处理逻辑不需要及时返回,甚至不需要返回值,但是如果充斥在主流程中,占用大量时间来处理,就可以通过异步的方式来
- 前言:页面静态化其实就是将原来的 * 页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页,这样用户
- 这篇文章主要介绍了Spring Boot Logback配置日志过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 1、实体类package com.yl.bean;import java.io.Serializable;import java.util.
- 一、 搭建struts2环境在myeclipse下,右击项目->MyEclipse->Project Facets->in
- 在线程间通信方式中,我们了解到可以使用Semaphore信号量来实现线程间通信,Semaphore支持公平锁和非公平锁,Semaphore底
- 关于idea2021最新激活教程,请点击此处,获取最新激活教程还有一种激活方法,点击此处获取吧 !下面看下IDEA 2021.2 启动报错问
- 基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后
- yaml语法注解配置文件两种形式application.properties和.yaml第一种语法 key=value第二种key:空格va