Ibatis3入门学习

来源:互联网 发布:管理器数据库已损坏 编辑:程序博客网 时间:2024/05/02 00:19

 

Ibatis3入门学习笔记

 

一、            搭建环境

1. 下载包

下载地址:http://www.mybatis.org/java.html

 

2. 解压

 

3. 新建web项目testMyBatis

并将解压出来的包拷贝到新建项目中的WebRoot/lib:

asm-1.5.3.jar

cglib-2.1_3.jar

commons-logging-1.1.1.jar

mybatis-3.0.1.jar

slf4j-api-1.5.8.jar

slf-log4j12-1.5.8.jar

 

由于我用到的是SQL Server数据库,所以要将相应的DB驱动拷贝到lib中:

        Jtds-1.1.jar

      

       4.新建包

              com.test.model

              com.test.dao

 

二、            DB表说明

要测试的表名 t_user, 结构如下:

       CREATE TABLE [dbo].[t_user](

        [id][bigint] IDENTITY(1,1) NOT NULL,

        [name][varchar](20) NOT NULL,

        [age][int] NOT NULL

) ON [PRIMARY]

 

 

三、            创建对象文件

1.src/log4j.properties

log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n

log4j.logger.java.sql.PreparedStatement=DEBUG

 

    2.src/sqlmap-config.xml

       <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">

<configuration>

  <typeAliases>

      <typeAlias type="com.test.model.User"alias="user" />

  </typeAliases>

  <environments default="development">

     <environment id="development">

         <transactionManagertype="JDBC" />

         <dataSource type="UNPOOLED">

            <property name="driver"

                value="net.sourceforge.jtds.jdbc.Driver" />

            <property name="url"              value="jdbc:jtds:sqlserver://192.168.0.101:1433/test"/>

            <property name="username" value="test"/>

            <property name="password" value="123"/>

         </dataSource>

     </environment>

  </environments>

  <mappers>

     <mapper resource="com/test/model/User.xml" />

  </mappers>

</configuration>

 

3.com.test.model.User.java

package com.test.model;

 

importjava.io.Serializable;

 

public class User implementsSerializable {

    private static final long serialVersionUID = 8681358563101101660L;

   

    private long id;

    private String name;

    private int age;

   

    public long getId() {

       return id;

    }

    public void setId(long id) {

       this.id = id;

    }

    public String getName() {

       return name;

    }

    public void setName(Stringname) {

       this.name = name;

    }

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }

}

 

4.com.test.model.User.xml

        <?xml version="1.0"encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="user">

    <resultMap type="user" id="userMapper">

       <result property="id"    column="id"   jdbcType="BIGINT"/>

       <result property="name" column="name" jdbcType="VARCHAR"/>

       <result property="age"   column="age" jdbcType="INTEGER"/>

    </resultMap>

   

    <select id="getUserById" parameterType="int" resultMap="userMapper">

       select * fromt_user where id = #{id}

    </select>

   

    <select id="getUserList" resultMap="userMapper">

       select * fromt_user

    </select>

 

    <insert id="insert">

       insert intot_user(name, age) values (#{name}, #{age})

    </insert>

   

    <delete id="delUserById">

       delete fromt_user where id=#{id}

    </delete>

   

    <update id="update">

       update t_userset name = #{name}, age=#{age}

       whereid=#{id}

    </update>

 

</mapper>

 

5.com.test.dao.IbatisSessionFactory.java

package com.test.dao;

 

import java.io.IOException;

import java.io.Reader;

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 classIbatisSessionFactory {

  private static SqlSessionFactory sqlMapper;

  private static SqlSession sqlSession;

 

  static{

     try{

         Stringresource = "sqlmap-config.xml";

         Readerreader = Resources.getResourceAsReader(resource);

        

         sqlMapper =new SqlSessionFactoryBuilder().build(reader);

     }catch(IOExceptione){

         e.printStackTrace();

     }

  }

 

  public static SqlSession getSqlSession(){

     sqlSession =sqlMapper.openSession();

     returnsqlSession;

  }

 

        publicstatic void closeSqlSession(){

     if(sqlSession!=null){

         sqlSession.close();

     }

  }

}

 

6.com.test.dao.UserDaoInte.java

package com.test.dao;

 

import java.util.List;

 

importcom.test.model.User;

 

 

public interface UserDaoInte{

 

  public UsergetUserById(Long id);

 

  public void addUser(Useruser);

 

  public void delUser(Long id);

 

  public void updateUser(Useruser);

 

  public List<User>getUserList();

   

}

 

7.com.test.dao.UserDao.java

    package com.test.dao;

 

import java.util.List;

importorg.apache.ibatis.session.SqlSession;

importcom.bd.dao.IbatisSessionFactory;

importcom.test.model.User;

 

public class UserDao implementsUserDaoInte{

 

    @Override

    public void addUser(User user){

       SqlSessionsession = IbatisSessionFactory.getSqlSession();

       session.insert("insert", user);

       session.commit();

       session.close();

    }

 

    @Override

    public void delUser(Long id) {

       SqlSessionsession = IbatisSessionFactory.getSqlSession();

       session.delete("delUserById", id);

       session.commit();

       session.close();

    }

 

    @Override

    public UsergetUserById(Long id) {

       SqlSessionsession = IbatisSessionFactory.getSqlSession();

       User user =(User)session.selectOne("getUserById", id);

       session.commit();

       session.close();

      

       return user;

    }

 

    @Override

    public void updateUser(Useruser) {

       SqlSessionsession = IbatisSessionFactory.getSqlSession();

       session.update("update", user);

       session.commit();

       session.close();

    }

 

    @Override

    public List<User>getUserList() {

       SqlSessionsession = IbatisSessionFactory.getSqlSession();

       List<User>list = (List)session.selectList("getUserList");

       session.commit();

       session.close();

       return list;

    }

 

}

 

8.写一个测试类 com.test.dao.Test.java

package com.test.dao;

 

import java.util.List;

importcom.test.model.User;

 

public class Test {

    public static void main(String[]args) {

       UserDaoIntedao = new UserDao();

      

       // 增加部分

       User user = new User();

       user.setAge(24);

       user.setName("name 4");

      

       dao.addUser(user);

 

      

       // 获取单个对象部分

//User user = dao.getUserById(2L);

//System.out.println(user.getName());

    

     // 更新部分

//user.setName("test name2");

//dao.updateUser(user);

    

     // 删除

//dao.delUser(0L);

      

       // 获取全部数据

//List<User> users = dao.getUserList();

//System.out.println(users.size());

      

    }

 

}

 

四、            采用注解方式

1.   com.test.model.User.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="com.test.dao.UserDaoInte"></mapper>

 

2.   UserDaoInte.java

package com.test.dao;

 

import java.util.List;

import org.apache.ibatis.annotations.Select;

importcom.test.model.User;

 

public interface UserDaoInte { 

      @Select("select *from t_user")

      public List<User> getUserList();  

}

 

3.   测试代码

public static void main(String[]args) {

       SqlSessionsession = IbatisSessionFactory.getSqlSession();

       UserDaoIntedao = session.getMapper(UserDaoInte.class);

       List<User>list = dao.getUserList();

       System.out.println(list.size());

      

    }

 

4.说明

           在通过接口+元注释的方式定义SqlMapper。此时就不需要接口的实现类。

 

原创粉丝点击