麻烦是麻烦些,不过可以实现SQL与模型分离
mybatis-3.4.6.jar 放在站点WEB-INF/lib目录下
配置均放在WEB-INF/classes目录下
1、mysql.properties//数据源配置,这个可根据不同数据库进行设置
#######自定义配置
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/sc_test?characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
jdbc.username=root
jdbc.password=123456
2、mybatis.cfg.xml //mybatis配置文件 格式必须一致
<?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="mysql.properties"></properties>
<typeAliases >
<!-- 别名方式1,一个一个的配置
type中放置的是类的全路径,alias中放置的是类别名
<typeAliase
type="test.z.mybatis.beans.TestBean" alias="UserBean"/> -->
<!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 -->
<package
name="test.z.mybatis.beans"/>
</typeAliases>
<!-- 配置mybatis运行环境 -->
<environments
default="cybatis">
<environment
id="cybatis">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务
-->
<transactionManager type="JDBC" />
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI
-->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池
-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!--
告知映射文件方式1,一个一个的配置-->
<mapper
resource="test/z/mybatis/mapper/TestMapper.xml"/>
<!--
告知映射文件方式2,自动扫描包内的Mapper接口与配置文件
<package
name="test/z/mybatis/mapper"/> -->
</mappers>
</configuration>
3、mapper配置,根据mybatis.cfg.xml中mappers节点的节点指定目录
这只是其中一个案例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace="test.z.mybatis.mapper.TestMapper">
<!-- 自定义返回结果集
-->
<resultMap id="userMap" type="TestBean">
<id property="id" column="id"
javaType="java.lang.Integer"></id>
<result
property="username" column="username"
javaType="java.lang.String"></result>
<result
property="password" column="password"
javaType="java.lang.String"></result>
<result
property="sex" column="sex"
javaType="java.lang.Integer"></result>
</resultMap>
<!-- 在各种标签中的id属性必须和接口中的方法名相同 ,
id属性值必须是唯一的,不能够重复使用。parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型-->
<!-- useGeneratedKeys:( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC
的getGeneratedKeys
方法来取出由数据(比如:像 MySQL 和 SQLServer
这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。 -->
<!--keyProperty: (仅对
insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey
子元素设置它的值。默认:不设置。 -->
<!--#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值
-->
<insert id="insertUser" useGeneratedKeys="true"
keyProperty="id">
insert into sc_user (username,password,sex)
values (#{username},#{password},#{sex})
</insert>
<update id="updateUser" >
update sc_user set
username=#{username},password=#{password},sex=#{sex} where id=#{id}
</update>
<delete id="deleteUser"
parameterType="int">
delete from sc_user where id=#{id}
</delete>
<select id="selectUserById"
parameterType="int" resultMap="userMap">
select * from sc_user where
id=#{id}
</select>
<select id="selectAllUser"
resultMap="userMap">
select * from sc_user
</select>
</mapper>