Mybatis3框架的搭建(详细过程)

来源:互联网 发布:数据库中省略为什么 编辑:程序博客网 时间:2024/06/06 17:39

由于公司用的框架是 spring3+mybatis3  所以我想先一步步的学习这些框架

下面就开始搭建我们的mybatis把

第一步新建我们的java项目(测试用并非web项目)

1.导入JAR包   

mybatis-3.2.2    --------------mybatis的主JAR包

log4j-1.2.17-------------------日志JAR包

sqljdbc4-2.0------------------连接sqlserver数据库JAR包(这里我们用的是sqlserver数据库  其他的数据库可以自行网上查找)

2.连接我们的数据库 (这里用DOS连接)

sqlcmd  -U 用户名   -P 密码

然后 进入我们的数据库 

use  数据库名称

go

//////////////////////////////////////////////

省略SQL语句  创建表  插入测试数据

////////////////////////////////////////////


3.新建我们的实体类  User.java

package com.mybatis.bean;
import java.io.Serializable;
public class User implements Serializable {
/**
* 用户实体类
*/
private static final long serialVersionUID = -7080023541843149565L;
private int id;
private String name;
private String code;
private String password;
private int status;
private String cdate;
private String udate;
private String ddate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getCdate() {
return cdate;
}
public void setCdate(String cdate) {
this.cdate = cdate;
}
public String getUdate() {
return udate;
}
public void setUdate(String udate) {
this.udate = udate;
}
public String getDdate() {
return ddate;
}
public void setDdate(String ddate) {
this.ddate = ddate;
}
}

然后在建立我们的 mapper接口userMapper.java(操作数据库调用的方法)

package com.mybatis.mapper;
import java.util.List;
import com.mybatis.bean.User;
public interface UserMapper {
/**
* 查询所有用户
* @return
*/
     public List<User> getUserAll();
     /**
      * 根据ID 查找用户
      * @param id
      * @return
      */
     public User getUserById(int id);
}

下面建立我们的mapper接口的配置文件 userMapper.xml 主要是用来执行SQL语句的  

<?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="com.mybatis.mapper.UserMapper">  
<select id="getUserAll" resultType="User"><!--这里的方法名称要和接口里面的一致-->
SELECT  t.id, t.name, t.code, t.password, t.status, convert(varchar, t.cdate, 20) as cdate, convert(varchar, t.udate, 20) as udate, convert(varchar, t.ddate, 20) as ddate
FROM t_user t
WHERE  t.status=1
</select>
<select id="getUserById" parameterType="int" resultType="User">
select 
t.id, t.name, t.code, t.password, t.status, convert(varchar, t.cdate, 20) as cdate, convert(varchar, t.udate, 20) as udate, convert(varchar, t.ddate, 20) as ddate 
from 
t_user t
where
t.status = 1
and
t.id = #{id}
</select>
</mapper>

这些标签的含义 就不一个个解释了最基本的很好理解的

然后开始我们的正题  配置mybatis的xml  mybatis-config.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> 
        <!-- simple alias for full class name --> 
     <typeAlias alias="User" type="com.mybatis.bean.User"/> 
    </typeAliases> 
    <environments default="development"> 
        <environment id="development"> 
            <transactionManager type="JDBC"/> 
            <dataSource type="POOLED"> 
                <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> 
                <property name="url" value="jdbc:sqlserver://localhost:1433;DataBaseName=crm"/> 
                <property name="username" value="sa"/> 
                <property name="password" value="system"/> 
            </dataSource> 
        </environment> 
    </environments>  
   <mappers> 
        <mapper resource="com/mybatis/mapper/UserMapper.xml"/> 
    </mappers>
</configuration> 

//标签都是一些常用的 很好理解 

然后在配置我们的lg4j文件log4j.properties

log4j.rootLogger=ERROR,stdout,R
#--------------------stdout--------------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
#--------------------R--------------------------------
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.Encoding=UTF-8
#log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#this log file will be stored in web server's /bin directory,modify to your path which want to store.
log4j.appender.R.File=d://spring.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=10MB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=10
#log4j.appender.R.datePattern='.'yyyy-MM-dd-HH-mm
#log4j.appender.R.datePattern='.'yyyy-MM-dd
log4j.appender.R.append=true
## Keep one backup file
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
#[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

好啦 一切都准备好了 下面开始编写我们的测试类 MybatisTest.java

package test;
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.bean.User;
import com.mybatis.mapper.UserMapper;
public class MybatisTest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// 配置文件的路径 
        String res = "mybatis-config.xml" ; 
        //加载 配置文件
        Reader reader=Resources.getResourceAsReader(res);
        //创建SqlSessionFactory 取得SqlSession
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //取得一个SqlSession(对Jdbc中connection的封装) 
        SqlSession session=factory.openSession();
        //取得mybatis实现并实例化好的UserMapper接口实例 
        UserMapper umap=session.getMapper(UserMapper.class);
        //执行数据库操作
        User user=umap.getUserById(7);
        List<User> list1=umap.getUserAll();
        System.out.println("用户Id为"+7+"的用户信息:id:"+user.getId()+" name:"+user.getName()+"code:"+user.getCdate()+"password:"+user.getPassword());
         System.out.println("----------------------------所有用户信息--------------------------");
         System.out.println("---id--------name-------code----------password-------------------");
        //关闭连接
         for (User user1 : list1) { 
        System.out.println("---"+user1.getId()+"--------"+user1.getName()+"-------"+user1.getCdate()+"------"+user1.getPassword()+"-"); 
         } 
        session.close();
}
}


运行测试类就可以显示我们想要的结果了 这样mybatis的框架也就搭好

0 0