<?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>

MyBatis CRUD Java POJO操作的更多相关文章

  1. Mybatis学习--Java API

    学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/java-api.html#directoryStructure 既然你已经知道如何配 ...

  2. Java开发--操作MongoDB

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们 ...

  3. 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件

    根据JSON文件自动生成Java POJO类(Java Bean)源文件 本文介绍使用程序jsonschema2pojo来自动生成Java的POJO类源文件,本文主要使用maven,其他构建工具请参考 ...

  4. Java程序操作数据库SQLserver详解

    数据库基本操作:增删改查(CRUD) crud介绍(增.删.改.查操作) CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Del ...

  5. Mybatis成为Java互联网时代首选持久框架的原因

    持久层可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其他情况下,重新开启系统仍然可以读取这些数据.一般执行持久任务的都是数据库系统.持久 ...

  6. java POJO中 Integer 和 int 的不同,用int还是用Integer

    https://www.jianshu.com/p/ff535284916f [int和Integer的区别] int是java提供的8种原始类型之一,java为每个原始类型提供了封装类,Intege ...

  7. Mybatis实现批量添加操作

    Mybatis实现批量添加操作 学习内容: 1. 使用 2. 代码实现 2.1 UserMapper.java 接口 2.2 UserMapper.xml 总结: 学习内容: 1. 使用 这里通过动态 ...

  8. Java实现操作dos命令

    java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...

  9. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

随机推荐

  1. css中margin重叠和一些相关概念(包含块containing block、块级格式化上下文BFC、不可替换元素 non-replaced element、匿名盒Anonymous boxes )

    平时在工作中,总是有一些元素之间的边距与设定的边距好像不一致的情况,一直没明白为什么,最近仔细研究了一下,发现里面有学问:垂直元素之间的margin有有互相重叠的情况:新建一个BFC后,会阻止元素与外 ...

  2. js浏览器兼容

    //window.event   IE:有window.event对象   FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMo ...

  3. 打开地图文件和shape文件代码加载Mxd文档

    代码加载Mxd文档 用代码添加Mxd文档,用到AxMapControl.LoadMxFile(sFilePath),我们只要将Mxd文档的路径传给这个方法即可 /// <summary>  ...

  4. 高橋君とホテル / Tak and Hotels

    高橋君とホテル / Tak and Hotels Time limit : 3sec / Stack limit : 256MB / Memory limit : 256MB Score : 700  ...

  5. PAT (Advanced Level) 1011. World Cup Betting (20)

    简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...

  6. python继承的实例

    class SchoolMember(object):#定义学校 member=0#默认成员为0个 amount=0#默认学费为0元 def __init__(self,name,age,sex):# ...

  7. Tomcat热部署:Maven项目一键部署到Tomcat服务器 - 支持多环境

    参考:Eclipse中的Maven项目一键部署到Tomcat服务器 - 支持多环境部署 命令 debug模式设置关联源码 eclipse --> 项目右键 --> Debug As --& ...

  8. MySQL的IP处理函数inet_aton()和inet_ntoa()

    给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数.地址可以是4或8比特地址. mysql> SELECT inet_aton ...

  9. 10天学会phpWeChat——第八天:Form类,丰富表单提交的字段类型

    通过前面七讲的系列教程,我们完成了一个包含后台并自适应PC+h5移动端的文章管理模块. 在实际的生产环境中,文章投稿.商品上传等操作并不会简单局限于一个text和textarea组成的表单.在实际中, ...

  10. Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)

    A. Two Semiknights Meet 题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走.每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇? 由于骑 ...