<?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>
<!-- <settings> <setting name="useGeneratedKeys" value="false"/> <setting
name="useColumnLabel" value="true"/> </settings> <typeAliases> <typeAlias
alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>
</typeAliases> --> <environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value="" />
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test" />
<property name="username" value="root" />
<property name="password" value="mysql" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/stone/config/sqlxml/Person.xml" />
<mapper class="com.stone.dao.IPersonMapper"/>
</mappers>
</configuration>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="Person"> <resultMap type="com.stone.bean.Person" id="PersonResult">
<!-- jdbcType就是java.sql.Types.后面的名称 -->
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="BIRTHDAY" jdbcType="TIMESTAMP" property="birthday" />
</resultMap> <select id="queryPersonList" resultMap="PersonResult">
SELECT ID,NAME,BIRTHDAY
FROM person
</select>
<select id="queryPerson2" resultType="com.stone.bean.Person">
SELECT ID,NAME,BIRTHDAY
FROM person
</select> <insert id="insertPerson" parameterType="com.stone.bean.Person">
insert into
person(name,birthday) values(#{name},#{birthday});
</insert> <delete id="delPerson" parameterType="int">
delete from person where
id=#{id}
</delete> <select id="selPerson" parameterType="int" resultType="com.stone.bean.Person">
select id,name,birthday from person where id=#{id}
</select> <update id="updatePerson" parameterType="com.stone.bean.Person">
update person set
name=#{name},birthday = #{birthday} where id=#{id}
</update>
<select id="version" parameterType="long" resultType="int">
SELECT
version FROM user WHERE id = #{id,jdbcType=INTEGER}
</select> </mapper>
package com.stone.db; import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; /**
* 访问数据库类
*/
public class DBAccess {
public SqlSession getSqlSession() throws IOException {
// 通过数据库文件获取数据库连接
Reader reader = Resources
.getResourceAsReader("com/stone/config/Configuration.xml");
// 通过配置信息构建一个SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(reader);
// 获取SqlSessionFactory的第二种方法;
// InputStream inputStream = DBAccess.class
// .getResourceAsStream("com/stone/config/Configuration.xml");
// SqlSessionFactory factory = new SqlSessionFactoryBuilder()
// .build(inputStream);
// 通过SqlSessoinFactory打开一个数据库会话
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
package com.stone.bean; import java.text.SimpleDateFormat;
import java.util.Date; public class Person { private int id;
private String name;
private Date birthday; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} @Override
public String toString() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:SS");
return "Person [id=" + id + ", name=" + name + ", birthday="
+ dateFormat.format(birthday) + "]";
} }
package com.stone.dao; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import org.apache.ibatis.session.SqlSession; import com.stone.bean.Person;
import com.stone.db.DBAccess; public class DBDao { public List<Person> queryPerson() {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
List<Person> persons = new ArrayList<Person>();
try {
sqlSession = dbAccess.getSqlSession();
// 通过sqlSession执行SQL语句;
persons = sqlSession.selectList("Person.queryPersonList");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return persons;
} public List<Person> queryPerson2() {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
List<Person> persons = new ArrayList<Person>();
try {
sqlSession = dbAccess.getSqlSession();
// 通过sqlSession执行SQL语句;
persons = sqlSession.selectList("Person.queryPerson2");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return persons;
} public void insertPerson(Person person) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
String statement = "Person.insertPerson";
// int The number of rows affected by the insert.
int insert = sqlSession.insert(statement, person);
System.out.println("insert result:" + insert);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
} public void deletePerson(int id) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
String statement = "Person.delPerson";
int delete = sqlSession.delete(statement, id);
System.out.println("delete rownums:" + delete);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
} public Person getPerson(int id) { DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
Person person = null;
try {
sqlSession = dbAccess.getSqlSession();
String statement = "Person.selPerson";
person = sqlSession.selectOne(statement, id);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return person;
} public int insertPerson2() {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
int insertPerson = -1;
try {
sqlSession = dbAccess.getSqlSession();
IPersonMapper mapper = sqlSession.getMapper(IPersonMapper.class); Person person = new Person();
person.setName("name2");
person.setBirthday(new Date());
insertPerson = mapper.insertPerson(person);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return insertPerson;
} public static void main(String[] args) {
DBDao dbDao = getPersons();
System.out.println("=================");
List<Person> persons2 = getPersons2(dbDao);
System.out.println("=================");
insertPerson(dbDao);
System.out.println("=================");
dbDao.deletePerson(persons2.get(0).getId());
System.out.println("=================");
System.out.println(dbDao.getPerson(persons2.get(1).getId()));
System.out.println("=================");
System.out.println(dbDao.insertPerson2());
} private static void insertPerson(DBDao dbDao) {
Person person = new Person();
person.setName("name");
person.setBirthday(new Date());
dbDao.insertPerson(person);
} private static List<Person> getPersons2(DBDao dbDao) {
List<Person> list2 = dbDao.queryPerson2();
for (Person person : list2) {
System.out.println(person);
}
return list2;
} private static DBDao getPersons() {
DBDao dbDao = new DBDao();
List<Person> list = dbDao.queryPerson();
System.out.println(list.size());
for (Person person : list) {
System.out.println(person);
}
return dbDao;
}
}
package com.stone.dao; import java.util.List; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.stone.bean.Person; public interface IPersonMapper {
@Insert("insert into person(name,birthday) values(#{name},#{birthday})")
public int insertPerson(Person person); @Delete("delete from person where id=#{id}")
public int deletePersonById(Person person); @Update("update person set name=#{name},birthday=#{birthday} where id=#{id}")
public int updatePerson(Person person); @Select("select id,name,birthday from person where id=#{id}")
public Person getPersonById(int id); @Select("select id,name,birthday from person")
public List<Person> getPerons(); }
log4j.rootLogger=DEBUG,Console
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = %d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache=INFO
#--------------------------------
log4j.logger.java.sql.ResultSet = INFO
log4j.logger.org.apache = INFO
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.com.ibatis = debug log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = debug log4j.logger.com.ibatis.common.jdbc.ScriptRunner = debug log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = debug
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="lib" path="lib/mybatis-3.2.8.jar" sourcepath="D:/stono/javasoft/mybatis/mybatis-3-mybatis-3.2.8.zip"/>
<classpathentry kind="lib" path="lib/mysql-connector-java-5.1.7-bin.jar"/>
<classpathentry kind="lib" path="lib/log4j-1.2.17.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>