先把我的sample 丟上來,範例我也是照網路上的sample小改一下

 

MemberData.java

package com.sivalabs.mybatisdemo.domain;

 

public class MemberData {

private Integer userId;

private String emailId;

private String password;

private String firstName;

private String lastName;

 

public Integer getUserId() {

return userId;

}

public void setUser_id(Integer userId) {

this.userId = userId;

}

public String getEmailId() {

return emailId;

}

public void setEmail_id(String emailId) {

this.emailId = emailId;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

@Override

public String toString() {

String strSql = "User_test [userId=" + userId + ", emailId=" + emailId

+ ", password=" + password + ", firstName=" + firstName

+ ", lastName=" + lastName + "]";

return strSql;

}

 

Create mybatis-config.xml  (放在config\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>

   <settings>

      <setting name="jdbcTypeForNull" value="NULL"/>

   </settings>

<!--

<typeAliases>

<typeAlias type="model.Visitor" alias="Visitor" />

</typeAliases>

-->

   <environments default="development">

      <environment id="development">

      <transactionManager type="JDBC"></transactionManager>

      <dataSource type="POOLED">

         <property name="driver" value="oracle.jdbc.OracleDriver" />

     <!-- ?useUnicode=true&amp;characterEncoding=utf8为了支持中文插入 -->

      <property name="url"

         value="jdbc:oracle:thin:@localhost:1521:XXXX" />

         <property name="username" value="XXXX" />

         <property name="password" value="XXXXXXXXX" />

         <property name="poolMaximumActiveConnections" value="50"/>

      </dataSource>

   </environment>

</environments>

 

   <mappers>

      <mapper resource='com/sivalabs/mybatisdemo/mappers/UserMapper.xml'/>

   </mappers>

</configuration>

 

resource就是要對應到設定sql的頁面

 

上面這支,由於我是使用oracle,如果是用mysql 可上網查一下設定

 

 

UserMapper.xml (放在com.sivalabs.mybatisdemo.mappers)

<?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='com.sivalabs.mybatisdemo.mappers.UserMapper'>

<mapper namespace='com.sivalabs.mybatisdemo.mappers.UserMapper'>
<select id='getUserById' parameterType='int' resultType='com.sivalabs.mybatisdemo.domain.MemberData'>
    SELECT
    user_id as userId,  
    email_id as emailId ,
    password,
    first_name as firstName,
    last_name as lastName
    FROM USER_TEST
    WHERE USER_ID = #{userId}
</select>

<!-- Instead of referencing Fully Qualified Class Names we can register Aliases in mybatis-config.xml and use Alias names. -->

<resultMap type='com.sivalabs.mybatisdemo.domain.MemberData' id='UserResult'>
   <id property='userId' column='user_id'/>
   <result property='emailId' column='email_id'/>
   <result property='password' column='password'/>
   <result property='firstName' column='first_name'/>
   <result property='lastName' column='last_name'/>
</resultMap>

<select id='getAllUsers' resultMap="UserResult" resultType='com.sivalabs.mybatisdemo.domain.MemberData'>
    SELECT * FROM USER_TEST
</select>

 

//useGeneratedKeys="true"keyProperty="MemberData.userId"

<insert id='insertUser' parameterType='com.sivalabs.mybatisdemo.domain.MemberData' >  
   INSERT INTO USER_TEST(user_id,email_id, password, first_name, last_name)
   VALUES(#{userId},#{emailId}, #{password}, #{firstName}, #{lastName})
</insert>

 

</mapper>

 

上面在Insert這段 有兩個屬性 useGeneratedKeyskeyProperty 網路上說明是指是否自動新增ID

我傳model使用的結果不OK,於是我把它拿掉自己塞ID,反正到時我也是用select sequno的方式自動取號

 

 

MyBatisUtil.java   (用來連資料庫用的)

package com.sivalabs.mybatisdemo.service;

 

import java.io.IOException;

import java.io.Reader;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

 

public class MyBatisUtil {

private static SqlSessionFactory factory;

private MyBatisUtil() {

}

static {

Reader reader = null;

try {

reader = Resources.getResourceAsReader("config/mybatis-config.xml");

factory = new SqlSessionFactoryBuilder().build(reader); 

} catch (IOException e) {

throw new RuntimeException(e.getMessage());

}

public static SqlSessionFactory getSqlSessionFactory() {

return factory;

}

}

 

UserService.java (相當於呼叫資料)

package com.sivalabs.mybatisdemo.service;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.sivalabs.mybatisdemo.domain.MemberData;
import com.sivalabs.mybatisdemo.mappers.User_TestMapper;

public class UserService
{

  public void insertUser(MemberData user) {
      SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
   try{
      User_TestMapper userMapper = sqlSession.getMapper(User_TestMapper.class);
      userMapper.insertUser(user);
      sqlSession.commit();
   }finally{
      sqlSession.close();
}
}

   public MemberData getUserById(Integer userId) {
      SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
   try{
// User_TestMapper userMapper = sqlSession.getMapper(User_TestMapper.class);
      MemberData userMapper = (MemberData) sqlSession.selectOne("com.sivalabs.mybatisdemo.mappers.UserMapper.getUserById", 3);

      return userMapper;

finally{
      sqlSession.close();
}
}

public List<MemberData> getAllUsers() {
       SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
try{
      List<MemberData> listMember = sqlSession.selectList("com.sivalabs.mybatisdemo.mappers.UserMapper.getAllUsers");

      return listMember;

/*
User_TestMapper userMapper = sqlSession.getMapper(User_TestMapper.class);
return userMapper.getAllUsers();
*/

   }finally{
      sqlSession.close();
}
}

   public void updateUser(MemberData user) {
      SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
   try{
      User_TestMapper userMapper = sqlSession.getMapper(User_TestMapper.class);
      userMapper.updateUser(user);
      sqlSession.commit();
   }finally{
      sqlSession.close();
}

}

   public void deleteUser(Integer userId) {
      SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
   try{
      User_TestMapper userMapper = sqlSession.getMapper(User_TestMapper.class);
      userMapper.deleteUser(userId);
      sqlSession.commit();
   }finally{
      sqlSession.close();
}

}

}

看到紅字的部分getMapper(Class這個我沒搞定,就先用select系列的吧!!

基本上可使用selectone、selectList、update、delete等 光看名子就知道使用時機

所以當你一次要搜尋多筆則要選擇selectList 反之一筆的話就是selectone

 

 

接下來就自己建立一個測試用頁面

 

 參考原始網址:http://www.javacodegeeks.com/2012/11/mybatis-tutorial-crud-operations-and-mapping-relationships-part-1.html

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JoshS 的頭像
    JoshS

    JoshS的部落格

    JoshS 發表在 痞客邦 留言(0) 人氣()