Mybatis的CRUD操作

開發工具:

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>


最後別忘了在mapper的接口這裏再加一個

/**
     * 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;




發佈了52 篇原創文章 · 獲贊 30 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章