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