這兩天看看mybatis,這個輕量級orm框架,看后面把它整合進項目中。把JDBC分離出來。這里只是簡單環境搭建,未涉及原理。
1.創建工程
這里為了方便直接用一個模板

創建完畢

2.引入mybatis所需jar包
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> //測試相關 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> //日志相關 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
3.創建一個實體類對應數據字段,並在數據庫中創建對應的數據表
public class User implements Serializable { private static final long serialVersionUID = 8104961490512068314L; private int id; private String name; private String dept; private String phone; private String website; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDept() { return dept; } public void setDept(String dept) { this.dept = dept; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getWebsite() { return website; } public void setWebsite(String website) { this.website = website; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", dept='" + dept + '\'' + ", phone='" + phone + '\'' + ", website='" + website + '\'' + '}'; } }
4.添加mysql配置文件,mybatis配置文件
mybatis-config.xml
<configuration> <properties resource="mysql.properties"></properties> <typeAliases> <!-- 別名方式1,一個一個的配置 type中放置的是類的全路徑,alias中放置的是類別名 <typeAliase type="com.mybatis.demo.Entity.User" alias="UserBean"/> --> <!-- 別名方式2,自動掃描,將JAVA類的類名作為類的類別名 --> <!--<package name="com.mybatis.demo.Entity"/>--> <typeAlias alias="User" type="com.mybatis.demo.Entity.User"/> </typeAliases> <!-- 配置mybatis運行環境 --> <environments default="development"> <environment id="development"> <!-- 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.databaseurl}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <!-- 映射文件方式1,一個一個的配置--> <mapper resource="mapper/UserMapper.xml"/> <!-- 映射文件方式2,自動掃描包內的Mapper接口與配置文件 --> <!--<package name="com.mybatis.demo"/>--> </mappers> </configuration>
mysql.properties:
jdbc.databaseurl=jdbc:mysql:///javaweb_community?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.username=root jdbc.password= jdbc.maxActive=100 jdbc.maxWait=5000 jdbc.filters=wall,stat
ps: 這里mysql的jar包版本在6.0以上的和以前版本有一點差異。
5.添加mapper類接口以及對應mapper.xml
package com.mybatis.demo.mapper; import com.mybatis.demo.Entity.User; public interface UserMapper { User GetUserByID(Integer id) throws Exception; }

<mapper namespace="com.mybatis.demo.mapper.UserMapper"> <!-- 自定義返回結果集 --> <resultMap id="userMap" type="User"> <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="account" column="account" javaType="java.lang.Double"></result> </resultMap>
<select id="GetUserByID" parameterType="int" resultMap="userMap"> select * from `user` where id = #{id} </select> </mapper>
6.在配置文件中注冊該xml.

7.編寫單元測試,通過sqlSession 操作數據庫
public class AppTest { /** * Rigorous Test :-) */ @Test public void shouldAnswerWithTrue() { try { //使用MyBatis提供的Resources類加載mybatis的配置文件 Reader reader = Resources.getResourceAsReader("mybatis/mybatis-config.xml"); //構建sqlSession的工廠 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session= sessionFactory.openSession(); UserMapper mapper=session.getMapper(UserMapper.class); User user= mapper.GetUserByID(1); System.out.println(user.toString()); session.commit(); } catch (Exception e) { e.printStackTrace(); } } }

