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