很久就像学习下MyBatis了,但是一直拖着,好了现在有时间学习了
之前学过Hibernate,大致了解这类型的框架,在我看来这类型的框架大部分时间都是花在配置上,单纯的是使用上来说没什么技术水准,但是能大大减少开发上的时间,
想要提升自己的水平还是得从源码入手,理解框架的设计思想.............
不想说废话了,就初步使用MyBatis简单做个总结:
测试表
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`email` varchar(60) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
测试Bean
public class User {
private Longid;
private String username;
private String password;
private String email;
private String phone;
//Setter&Getter
}
MyBatis个人认为比较好的地方是省时省事,它将不必要的操作一步省去,对于开发网站来说比较重要的一点就是对SQL进行CRUD操作,在MyBatis中,我们只需要写出对应的DAO操作接口,然后通过配置进行操作的映射配置就可以免去DAOImpl的实现
DAO层
初步的给出DAO操作接口,并进行配置
public interface UserDAO {
public User getUserById(Long id);
public void insertUser(User user);
public User deleteUserById(Long id);
public voidmodifyUserById(Long id);
}
MyBatis配置DAO操作形式
<?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 -->
<mapper namespace="wenj91.dao.UserDAO">
<!—这里ResultType中的User是在后面提到的mybatis-config.xml配置的wenj91.entity.User的别名 à
<select id="getUserById"resultType="User"><!—getUserById()返回值是Userà
select *
from user
where id = #{id}
</select>
<insert
id="insertUser"
parameterType="User"
flushCache="true"
timeout="20"><!-- insertUser() à
insert into user (id, username,password) values (#{id}, #{username}, #{password})
</insert>
. . .. . . . . .//其他操作
</mapper>
至此配置完了DAO层操作接口,这样就可以省去DAOImpl的实现了
接下来是对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><!—配置开始-à
<typeAliases><!-别名组-à
<typeAlias alias="User"type="wenj91.entity.User" /><!—Bean别名-->
</typeAliases>
<environments default="development"><!—environment配置-->
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver"value="${driver}" /><!—其中${driver}是在mysqlDB.properties配置的属性 -->
<property name="url"value="${url}" />
<property name="username"value="${username}" />
<property name="password"value="${password}" />
</dataSource>
</environment>
</environments>
<mappers><!—DAO映射文件配置 -->
<mapper resource="wenj91/dao/UserDAO.xml"/>
</mappers>
</configuration>
下面是mysqlDB.properties的配置:
###mysql相关属性配置###
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
username=root
password=zlw420
至此已经完成了MyBatis的配置:
接下来测试下CRUD操作:
String config ="wenj91/dao/mybatis-config.xml"; //MyBatis主配置文件路径
String properties = "wenj91/properties/mysqlDB.properties";//sql数据库相关配置
InputStream is = null,is2 = null;
try {
is = Resources.getResourceAsStream(config);//通过资源类获取config配置输入流
Properties pro = new Properties();
is2 = Resources.getResourceAsStream(properties);//mysql配置文件输入流
pro.load(is2);
SqlSessionFactoryBuilderbuilder = newSqlSessionFactoryBuilder();//session工厂创建器
SqlSessionFactoryfactory = builder.build(is,pro);//创建session工厂
SqlSession session = factory.openSession();//创建session
User user = session.selectOne("wenj91.dao.UserDAO.getUserById", 1);//通过session来进行CRUD操作
System.out.println("|" +user.getId() +" | " + user.getUsername() +" | "
+ user.getPassword() + " |"+user.getEmail() +" | " + user.getPhone() + " |");
User user2 =new User();
// // user2.setId(6L);
// user2.setUsername("UserName");
// System.out.println(session.insert("wenj91.dao.UserDAO.insertUser",user2));
// session.commit();
//其他相关CRUD操作
} catch (IOExceptione) {
e.printStackTrace();
}
结果输出:
从上面测试代码中,可以看出Every MyBatis application centers around aninstance of SqlSessionFactory. A SqlSessionFactory instance can be acquired byusing the SqlSessionFactoryBuilder. SqlSessionFactoryBuilder can build aSqlSessionFactory instance from an XML configuration file, or from a customprepared instance of the Configuration class.
更多更详细的操作可以参考: http://mybatis.github.io/mybatis-3/java-api.html
SQL相关可以参考: http://mybatis.github.io/mybatis-3/dynamic-sql.html
&: http://mybatis.github.io/mybatis-3/statement-builders.html