一直以来,对于mybatis的了解和使用都是旧项目的粘贴复制,没有系统的了解过。终于下定决心从头开始。。。。
注意:这里的项目搭建并没有与spring等框架进行整合!!!
言归正传....
数据库: oracle
开发工具: eclipse
项目结构:
一、数据层面 (忽略中文注释)
1、建表
--建表
CREATE TABLE users(
id INT PRIMARY KEY,
NAME VARCHAR(20),
age INT
);
--插入字段
alter table users add (reg_time varchar2(60));
comment on column users.reg_time is '注册时间';
alter table users add (profession varchar2(100));
comment on column users.profession is '擅长的领域';
alter table users add (sex char(1));
comment on column users.sex is '性别';
alter table users add (Wizard_Class varchar2(100));
comment on column users.Wizard_Class is '修行体系的三大类';
alter table users add (Wizard_Level varchar2(100));
comment on column users.Wizard_Level is '修为细分为12个境界';
alter table users add (Wizard_Belong_to varchar2(100));
comment on column users.Wizard_Belong_to is '所属地区';
2、随意插入几条数据
insert into users (ID, NAME, AGE, REG_TIME, PROFESSION, SEX, WIZARD_CLASS, WIZARD_LEVEL, WIZARD_BELONG_TO, CERTIFICATE_NUM)
values (1, '孤傲苍狼', 1, '1544169442858', '狼拳', '1', 'THOUGHT', 'KNOW', 'DHG', '201910130251');
二、项目代码
1、新建一个web工程
2、引入jar包
mybatis-3.4.5.jar、mysql-connector-java-5.1.3-rc-bin.jar 、ojdbc14.jar
3、在classpath下新建数据库参数的配置文件 application.properties
#dev
dev.driver: oracle.jdbc.driver.OracleDriver
dev.url: jdbc:oracle:thin:@IP:1521/ORCL #IP自己调整
dev.username: username #连接数据库的用户名
dev.password: password #连接数据库的密码
4、编写javabean,这里并没有什么值得注意的地方
/**
* 一定要存在无参的构造方法,推荐对bean序列化
*/
public class Users implements Serializable {
private static final long serialVersionUID = -2750219262718851379L;
private Integer id;
private String name;
private String profession;
private Integer age;
//....省略其他的属性及getter和setter方法
}
5、编写Dao接口,这里也并没有什么值得注意的地方
public interface UsersDao {
/**
* 根据id获取user
*
* @param id
* @return
*/
Users selectUsersById(Integer id);
}
6、对应于dao接口,这里新建一个usersMapper.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">
<!--namespace 指向的包为UsersMapper接口 这是实现动态代理的条件之一 -->
<mapper namespace="com.mybatis.dao.UsersDao">
<select id="selectUsersById" resultType="Users" parameterType="int">
select * from users u where u.id = #{id}
</select>
</mapper>
7、在classpath下新建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>
<!-- properties -->
<properties resource="application.properties"></properties>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" /><!-- 自动转驼峰 -->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- typeAliases -->
<typeAliases>
<package name="com.mybatis.bean"/>
</typeAliases>
<!-- environments -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="autoCommit" value="true"/>
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${dev.driver}" />
<property name="url" value="${dev.url}" />
<property name="username" value="${dev.username}" />
<property name="password" value="${dev.password}" />
</dataSource>
</environment>
</environments>
<!-- mapper -->
<mappers>
<!-- 映射器方式一 : xml dao 同时存在-->
<mapper resource="com/mybatis/mapper/usersMapper.xml" />
</mappers>
</configuration>
8、测试
public class ConnectionTest {
public static void main(String[] args) {
choiceTwo();
// choiceOne();
}
public static void choiceTwo() {
String resource = "mybatis-config.xml";
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
UsersDao usersDao = session.getMapper(UsersDao.class);
Users user = usersDao.selectUsersById(1);
System.out.println(user);
}
public static void choiceOne() {
String resource = "mybatis-config.xml";
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
//需要修改usersMapper.xml文件
//修改为 namespace="com.mybatis.mapper.usersMapper"
String statement = "com.mybatis.mapper.usersMapper.selectUsersById";
Users user = session.selectOne(statement, 1);
System.out.println(user);
}
}