mybatis使用注解

mysql.sql

DROP TABLE USERS;
CREATE TABLE USERS
(
 ID INT NOT NULL  AUTO_INCREMENT,
 NUM INT,
 NAME VARCHAR(400),
 SEX  INT,
 AGE  INT,
 UKEY VARCHAR(50),
 CREATE_DATE VARCHAR(50),
 PASSWORD VARCHAR(50),
 EMAIL  VARCHAR(50),
 REMARK VARCHAR(250),
 PRIMARY KEY(ID)
);

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> 

config.properties

#Mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://10.16.11.210:3306/test
username=root
password=123456
poolMaximumActiveConnections=15

 SessionFactory.java

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();
		}
	}
}

Users.java

package pojo;

import org.apache.ibatis.type.Alias;

@Alias("Users")
public class Users {
	private int id;
	private int num;
	private String name;
	private int sex;
	private int age;
	private String ukey;
	private String createDate;
	private String email;
	private String password;
	private String remark;

	public int getSex() {
		return sex;
	}

	public void setSex(int sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getUkey() {
		return ukey;
	}

	public void setUkey(String ukey) {
		this.ukey = ukey;
	}

	public String getCreateDate() {
		return createDate;
	}

	public void setCreateDate(String createDate) {
		this.createDate = createDate;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

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("[email protected]");
			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);

猜你喜欢

转载自jjjj2005jjjj.iteye.com/blog/1464684