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
?
#Mysqldriver=com.mysql.jdbc.Driverurl=jdbc:mysql://10.16.11.210:3306/testusername=rootpassword=123456poolMaximumActiveConnections=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 /></mappers>
?
不能加载接口,后来我在SessionFactory.java里加载了
?
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);Configuration config = sessionFactory.getConfiguration();config.addMapper(AnnUsersMapper.class);
?