開發工具:
Eclipse Mars
Mybatis Generator Eclipse
MySQL5.6
LIB包:
mybatis-3.3.0.jar
mysql-connector-java-5.1.7-bin.jar
Java代碼:
package cn.edu.ken.democrazy.main;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.edu.ken.democrazy.mybatis.client.TuserMapper;
import cn.edu.ken.democrazy.mybatis.model.Tuser;
import cn.edu.ken.democrazy.mybatis.model.TuserExample;
import cn.edu.ken.democrazy.mybatis.model.TuserExample.Criteria;
public class MyBatisMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
String resource = "myconf.xml";
try {
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
TuserMapper mapper = session.getMapper(TuserMapper.class);
TuserExample example = new TuserExample();
// select
List<Tuser> list = mapper.selectByExample(example);
Tuser user = (Tuser)list.get(0);
System.out.println("returnValueR:"+user.getTusername());
// insert
Tuser userNew = new Tuser();
userNew.setId(2);
userNew.setTusername("seconduser");
userNew.setTuserpassword("passw0Rd");
userNew.setTusergender("Female");
userNew.setTuserage("25");
userNew.setTuserposition("PMO");
int returnValueC = mapper.insert(userNew);
System.out.println("returnValueC:"+returnValueC);
session.commit();
// update
user.setTusername(user.getTusername()+"_updated");
int returnValueU = mapper.updateByExample(user, example);
System.out.println("returnValueU:"+returnValueU);
session.commit();
// delete
int returnValueD = mapper.deleteById(1);
System.out.println("returnValueD:"+returnValueD);
session.commit();
// close
session.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
config.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
myconfig.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.properties">
<!-- <property name="username" value="root" />-->
</properties>
<settings>
<!-- 全局的映射器啓用或禁用緩存。 -->
<setting name="cacheEnabled" value="true" />
<!-- 全局啓用或禁用延遲加載 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 允許或不允許多種結果集從一個單獨的語句中返回 -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 使用列標籤代替列名 -->
<setting name="useColumnLabel" value="true" />
<!-- 允許JDBC支持生成的鍵 -->
<setting name="useGeneratedKeys" value="false" />
<!-- 配置默認的執行器 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 設置超時時間 -->
<setting name="defaultStatementTimeout" value="25000" />
</settings>
<!-- 可以配置多種環境,如果你想連接兩個數據庫,你需要創建兩個SqlSessionFactory實例 -->
<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}" />
</dataSource>
</environment>
</environments>
<!-- 定義SQL映射語句路徑 -->
<mappers>
<mapper resource="cn/edu/ken/democrazy/mybatis/mapper/TuserMapper.xml" />
</mappers>
</configuration>
使用Mybatis的generator插件
generatorConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!-- mysql jdbc driver jar location -->
<context id="MysqlDBTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test" userId="root"
password="123456" />
<javaModelGenerator targetPackage="cn.edu.ken.democrazy.mybatis.model"
targetProject="DemoDBProject" />
<sqlMapGenerator targetPackage="cn.edu.ken.democrazy.mybatis.mapper"
targetProject="DemoDBProject" />
<javaClientGenerator targetPackage="cn.edu.ken.democrazy.mybatis.client"
targetProject="DemoDBProject" type="XMLMAPPER" />
<table schema="test" tableName="tuser">
</table>
</context>
</generatorConfiguration>
然後對於deleteByid,我們一開始沒有生成,我也不清楚具體原因
所以我在mapper這裏添加了一個
<delete id="deleteById" parameterType="int" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from tuser where id = #{id}
</delete>
/**
* delete by Id
*/
int deleteById(int id);
數據庫表
CREATE TABLE `tuser` (
`id` int(11) NOT NULL,
`tusername` varchar(45) DEFAULT NULL,
`tuserpassword` varchar(45) DEFAULT NULL,
`tuserage` varchar(45) DEFAULT NULL,
`tusergender` varchar(45) DEFAULT NULL,
`tuserposition` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;