Mybaits是为了可以方便管理数据库而产生的,本次根据慕课网的来入门学习
Mybatis与其他框架其实相差无多,也是利用配置文件来达到与数据库连接的目的
其中最重要的是就是两个配置文件,两个文件的模板都在这个文件夹下
mybatis / src / test / java/ o rg / apache / ibatis / submitted / complex_property
第一个是Configuration.xml
第二个是User.xml
文件的命名并无意义,这里采取官方名称,只要在加载的时候写清楚路径即可,
我们直接在项目根目录下建立即可,如果把配置文件分明的话,在后面加载我们输入我们建立xml的路径即可
(1)首先是configuration.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="useGeneratedKeys" value="false"/>
<setting name="useColumnLabel" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<!-- 在这里配置驱动 -->
<dataSource type="UNPOOLED">
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:complexprop"/>
<property name="username" value="sa"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/apache/ibatis/submitted/complex_property/User.xml"/>
</mappers>
</configuration>
其他的先不管,首先是,在这里配置驱动,而后是这里配置sql。
我们现在java里面连接驱动
Reader reader=Resources.getResourceAsReader("Configuration.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
在这里用Resources来加载写好的Configuration.xml文件,以Sql
SessionFactoryBuilder来获取一个SqlSessionFactory。
在以后想用的时候
SqlSession session=factory.openSession();
即可
(2)接下来就是User.xml了,
当获取到一个SqlSession后,我们怎么使用它呢,就需要User.xml了,User.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="User">
<resultMap type="UserAlias" id="UserResult">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="username" jdbcType="VARCHAR" property="username"/>
<result column="password" jdbcType="VARCHAR" property="password.encrypted"/>
<result column="administrator" jdbcType="BOOLEAN" property="administrator"/>
</resultMap>
<select id="find" parameterType="long" resultMap="UserResult">
SELECT * FROM user WHERE id = #{id:INTEGER}
</select>
<select id="version" parameterType="long" resultType="int">
SELECT version FROM user WHERE id = #{id,jdbcType=INTEGER}
</select>
<delete id="delete" parameterType="UserAlias">
DELETE FROM user WHERE id = #{id:INTEGER}
</delete>
<insert id="insert" parameterType="UserAlias" useGeneratedKeys="false">
INSERT INTO user
( id,
username,
password,
administrator
)
VALUES
( #{id},
#{username,jdbcType=VARCHAR},
#{password.encrypted:VARCHAR},
#{administrator,jdbcType=BOOLEAN}
)
</insert>
<update id="update" parameterType="UserAlias">
UPDATE user SET
username = #{username,jdbcType=VARCHAR},
password = #{password.encrypted,jdbcType=VARCHAR},
administrator = #{administrator,jdbcType=BOOLEAN}
WHERE
id = #{id,jdbcType=INTEGER}
</update>
<!-- Unique constraint check -->
<select id="isUniqueUsername" parameterType="map" resultType="boolean">
SELECT (count(*) = 0)
FROM user
WHERE ((#{userId,jdbcType=BIGINT} IS NOT NULL AND id != #{userId,jdbcType=BIGINT}) OR #{userId,jdbcType=BIGINT} IS
NULL) <!-- other than me -->
AND (username = #{username,jdbcType=VARCHAR})
</select>
</mapper>