mybatis的概念
概念:一個持久層框架
作用:ORM將sql語句映射成實體類
特點:巧靈活
半自動化,面向sql
使用與中小型項目的開發
1.創建mybatis-config.xml文件
配置文件(xml,全局設置、數據庫連接信息等)
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bank?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>//映射對應的文件路徑名
</mappers>
</configuration>
2.創建映射文件UserMapper.xml
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user">
//查
<select id="selectUser" resultType="com.zyk.entity.User">
select * from user where uid=1;
</select>
//改
<update id="updateUserById" parameterType="com.zyk.entity.User">
UPDATE user set username="張三" where uid=1;
</update>
//增
<insert id="insertUser" parameterType="com.zyk.entity.User">
insert into user (username,password)value("趙六","123");
</insert>
//刪
<delete id="deleteUserById" parameterType="com.zyk.entity.User">
DELETE from user where uid = 10;
</delete>
//當類屬性與數據庫字段完全一致時可以不寫
//不一致時就在column屬性中寫上數據庫中對應得字段名
<resultMap id="userResultMap" type="com.zyk.entity.User">
<result property="uid" column="uid"></result>
<result property="username" column="username"></result>
<result property="password" column="password"></result>
<result property="utypeId" column="utypeId"></result>
<result property="money" column="money"></result>
</resultMap>
</mapper>
其他一些屬性:
<!-- 連接初始值,連接池啟動時創建的連接數量的初始值 -->
<property name="initialSize" value="10" />
<!-- 連接池的最大值,同一時間可以從池分配的最多連接數量,0時無限制 -->
<property name="maxActive" value="100" />
<!-- 最大空閑值.當經過一個高峰時間后,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 ,0時無限制-->
<property name="maxIdle" value="0" />
<!-- 最小空閑值.當空閑的連接數少于閥值時,連接池就會預申請去一些連接,以免洪峰來時來不及申請 -->
<property name="minIdle" value="${minIdle}" />
<!-- 是否對已備語句進行池管理(布爾值),是否對PreparedStatement進行緩存 -->
<property name="poolPreparedStatements" value="true" />
<!-- 是否對sql進行自動提交 -->
<property name="defaultAutoCommit" value="true" />
實例:
public class MyTest {
public static void main(String[] args) throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//獲取主配置文件
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);//創建工廠對象
//SqlSessionFactiory 作用域最好在應用作用域---一旦創建就應該在應用的運行期間一直存在
//SqlSessionFactoryBuilder 作用域最好在方法作用域(局部方法變量)--一但創建了SqlSessionFactiory之后就再也用不倒了
SqlSession sqlSession = factory.openSession();//獲取SqlSession(相當于Connection)
int updateUserById = sqlSession.update("updateUserById");//修改
Object obj = sqlSession.selectOne("selectUserById");//查
int insertUser = sqlSession.insert("insertUser");//增
int del = sqlSession.delete("deleteUserById");//刪
sqlSession.commit();//提交 不提交數據庫數據不會發生改變
sqlSession.close();//使用完一次必須關閉,一次請求
//sqlsession是有生命周期,可以理解對應一次數據庫事務,基本可以理解為一次事務對應一個sqlsession。
}
}