mybatis使用注解2

注解的详细例子
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>

 <properties resource="config/config.properties"></properties>
 <typeAliases>
  <package name="pojo" />
 </typeAliases>

 <environments default="development">
  <environment id="development">
   <transactionManager type="JDBC" />
   <dataSource type="POOLED">
    <property name="driver" value="${driver}" />
    <property name="url" value="${url}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />
    <property name="poolMaximumActiveConnections" value="15" />
    <property name="poolMaximumCheckoutTime" value="5000" />
   </dataSource>
  </environment>
 </environments>
</configuration> 

SessionFactory.java 工厂方法 ,创建SqlSession对象及解析xml文件;

package common;

import java.io.IOException;
import java.io.Reader;
import mapper.AnnUsersMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SessionFactory {
 private static String RESOURCE = "config/mybatis-config.xml";
 private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();

 public static SqlSessionFactory getSessionFactory() {
  Reader reader = null;
  try {
   reader = Resources.getResourceAsReader(RESOURCE);
  } catch (IOException e) {
   System.out.println("read mybatis-config.xml failed!");
   e.printStackTrace();
  }
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  Configuration config = sessionFactory.getConfiguration();
  config.addMapper(AnnUsersMapper.class);
  return sessionFactory;
 }

 public static SqlSession getSession() {
  SqlSession session = threadLocal.get();
  if (session == null) {
   session = getSessionFactory().openSession();
   threadLocal.set(session);
   return session;
  }
  return session;
 }

 public static void closeSession() {
  SqlSession session = threadLocal.get();
  if (session != null) {
   threadLocal.set(null);
   session.close();
  }
 }
}

UserBean.java 实体方法, 封装类 setXXX, getXXX;

package pojo;

import org.apache.ibatis.type.Alias;

@Alias("Users")
public class Users {
 private int id;
 private int num;

 setXXX()
 getXXX()
}

注解接口 AnnUsersMapper.java

package mapper;

import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.session.RowBounds;
import pojo.Users;

public interface AnnUsersMapper {
 // @Insert("INSERT INTO USERS(num,name,age,sex,ukey,create_date,email,password,remark)
    values(#{num},#{name},#{age},#{sex},#{ukey},#{createDate},#{email},#{password},#{remark})")
 @InsertProvider(type = AnnUsersMapperProvider.class, method = "insert")
 int insert(List<Users> users);

 @Delete("DELETE FROM USERS")
 int delete();

 @Select("SELECT count(*) as total FROM USERS")
 int count();

 @Select("SELECT * FROM USERS")
 List<Users> selectByAll(@Param("rowBounds") RowBounds rowBounds);
}

class AnnUsersMapperProvider {
 public String insert() {
  String sql="INSERT INTO USERS(num,name,age,sex,ukey,create_date,email,password,remark) 

                                    values(" +
     "#{num}," +
     "#{name}," +
     "#{age}," +
     "#{sex}," +
     "#{ukey}," +
     "#{createDate}," +
     "#{email}," +
     "#{password}," +
     "#{remark}" +
    ")";
  return sql;
 }
}

AnnTest.java 测试类

package test; import java.util.Date; 
import mapper.AnnUsersMapper; 
import org.apache.ibatis.session.RowBounds; 
import org.apache.ibatis.session.SqlSession; 
import pojo.Users; 
import common.SessionFactory; 
import java.util.List;  
public class AnnTest {   
  public static void main(String[] args) {   
     SqlSession session = SessionFactory.getSession();  
     AnnUsersMapper userMapper = session.getMapper(AnnUsersMapper.class);  
  try {    
  System.out.println("---------insert strat------------");    
  Users users = new Users();    
  users.setAge(32);   
   users.setSex(1);   
   users.setCreateDate("2011-6-27");    
   users.setEmail("jjj2005jjjj@126.com");    
   users.setUkey("WERQWERWQERWQERTWETTREEEE"); 
   users.setRemark("nDKJGHJKJHHGHJJJJJGHGYT");    
   users.setPassword("123456");    
   users.setName("zhuyj");    
   Long l = new Date().getTime();    
   for (int i = 0; i < 100; i++) {     
    users.setNum(i);     
    session.insert("pojo.Users.insert", users);    
   }       
   session.commit();    
   System.out.println((new Date().getTime() - l) / 1000.0);    
   System.out.println("---------insert end-------------");     
   System.out.println("---------count strat-------------");   
   Long lll = new Date().getTime();    
   int count = userMapper.count();    
   System.out.println(count);    
   System.out.println(((new Date()).getTime() - lll) / 1000.0); 
   System.out.println("---------count end---------------");   
   System.out.println("---------select strat------------");   
   Long llll = new Date().getTime();       
   List<Users> li2= userMapper.selectByAll(new RowBounds(9000, 50)); 
   System.out.println(((new Date()).getTime() - llll) /1000.0);    
   System.out.println("---------select end--------------");      
   System.out.println(li2.get(1).getName());       
   System.out.println(li2.size());         
  } catch (Exception e) {    
   e.printStackTrace();    
   session.rollback();   
  } finally {    
  SessionFactory.closeSession();   
  }  
  } 
}

注意一个小问题,不知为什么在mybatis-config.xml使用

<mappers>
 <mapper class="mapper.AnnUsersMapper" />
</mappers>

不能加载接口,后来我在SessionFactory.java里加载了

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
Configuration config = sessionFactory.getConfiguration();
config.addMapper(AnnUsersMapper.class);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值