Mybatis開發環境搭建&單表增刪改查

SSM簡單介紹

SSM (用的非常多) 輕量化,簡單
Spring + Spring MVC (struts) + Mybatis (hibernate)
A(IoC容器) + B(MVC框架) + C(ORM框架) object-reation mapping=對象和關係(表)的映射

MyBatis

ybatis,前身ibatis,是一個orm框架 
orm=object(對象) relation(關係,表) mapping(映射)

環境搭建步驟:

1.新建Java項目,引入jar包,mybatis的jar包和mysql的jar包 
放到src目錄下
2.建立數據庫users,建立表user(id,userName,userPwd)
3.引入mybatis的主配置文件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>
    <!-- 引入db.properties文件 --> 
    <properties resource="db.properties"></properties>
    <!-- 對事務的管理和連接池的配置 -->  
    <environments default="development">
        <environment id="users">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                    <!-- 主配置文件中將連接參數修改爲變量-->
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.username}"/>
            <property name="password" value="${db.password}"/>
              </dataSource>
        </environment>
    </environments>
    <!-- mapping 文件路徑配置 -->  
    <mappers>
        <mapper resource="javastudy/userMapper.xml"/>
    </mappers>
</configuration>

4.在src目錄下添加db.properties文件

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/users
db.username=root
db.password=12345678

5.編寫實體類User

User(id,userName,userPwd)

6.在實體類所在包下,編寫userMapper.xml文件
描述針對這個實體類執行的所有方法

<?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="javastudy.UserMapper">
  <select id="selectUser" resultType="javastudy.User">
    select * from User where id = #{id}
  </select>
</mapper>
<!-- 映射的 SQL 語句文件  -->

7.編寫測試程序

public class MyTest {
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        SqlSession session = MyBatisUtils.openSession();
        String statement = "javastudy.UserMapper.selectUser";
        User user = session.selectOne(statement,1);
        System.out.println(user);
        session.close();
    }
}

完美!!! 這樣Mybatis環境就搭建好了

用Mybatis實現單表的增刪改查

注意提交sesssion.commit();

resultType查找返回參數
parameterType傳入參數

mybatis 插入亂碼

數據庫後面連接添加:useUnicode=true&characterEncoding=utf8

<?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="javastudy.UserMapper">
  <select id="selectUser" resultType="javastudy.User">

    select * from User where id = #{id}
  </select>
  <select id="selectAll" resultType="javastudy.User">
    <!-- 查詢所有 select -->
      select * from User
  </select>
  <insert id="addUser" parameterType="javastudy.User">
    <!-- 增加 insert  -->
      insert into user (userName,userPwd) values (#{userName},#{userPwd})
  </insert>
  <update id="updateUser" parameterType="javastudy.User">
    <!-- 修改 update  -->
      update user set userName=#{userName},userPwd=#{userPwd} where id=#{id}
  </update>
  <delete id="deleteUser" parameterType="int">
    <!-- 刪除 delete  -->
      delete from user where id=#{id}
  </delete>
</mapper>
<!-- 映射的 SQL 語句文件  -->

通過接口的方式訪問增刪改查方法

1.創建一個接口UserMapper接口,接口中的方法與映射中相關的sql命令標籤的id一致。
要求映射文件名稱,映射文件namespace的設置等,都要符合規範。

public interface UserMapper {
    public User selectUser(int id);
    public List<User> selectAll();
    public void addUser(User user);
    public void updateUser(User user);
    public void deleteUser(int id);
}

2.在主配置文件中,引入接口類型,而不是配置文件名稱。
在mybatis-cfg-xml

<mappers>
    <!-- 通過接口實現  -->
    <mapper class="javastudy.UserMapper"/>
    <!-- 通過userMapper.xml實現 -->
    <!-- <mapper resource="javastudy/userMapper.xml"/> -->
</mappers>

將SQL命令通過註解寫入到Mapper類中

@Insert,@Update,@Delete,@Select
注意:需要去掉映射文件,否則會產生衝突!

public interface UserMapper {
    @Select("select * from User where id = #{id}")
    public User selectUser(int id);
    @Select("select * from User")
    public List<User> selectAll();
    @Insert("insert into user (userName,userPwd) values (#{userName},#{userPwd})")
    public void addUser(User user);
    @Update("update user set userName=#{userName},userPwd=#{userPwd} where id=#{id}")
    public void updateUser(User user);
    @Delete("delete from user where id=#{id}")
    public void deleteUser(int id);
}

將SQL命令寫入一個專門的類中通過註解引入

專門存儲SQL命令的類

public class SqlProvider {
    public String selectUser() {
        return "select * from User where id = #{id}";
    }
    public String selectAll() {
        return "select * from User";
    }
    public String addUser() {
        return "insert into user (userName,userPwd) values (#{userName},#{userPwd})";
    }
    public String updateUser() {
        return "update user set userName=#{userName},userPwd=#{userPwd} where id=#{id}";
    }
    public String deleteUser() {
        return "delete from user where id=#{id}";
    }
}

通過註解引入

public interface UserMapper {
    @SelectProvider(type=SqlProvider.class,method="selectUser")
    public User selectUser(int id);
    @SelectProvider(type=SqlProvider.class,method="selectAll")
    public List<User> selectAll();
    @InsertProvider(type=SqlProvider.class,method="addUser")
    public void addUser(User user);
    @UpdateProvider(type=SqlProvider.class,method="updateUser")
    public void updateUser(User user);
    @DeleteProvider(type=SqlProvider.class,method="deleteUser")
    public void deleteUser(int id);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章