ibatis(现在名为MyBatis)是一种简单、易用、易学的持久化框架,可以用于Java语言编写的应用程序中。它广泛应用于企业级Java应用程序的数据访问层中,以提供一种简单的方式来访问和操作关系型数据库的数据。下面就让我来详细讲解ibatis的简单实现与配置的攻略。
1. 简单实现
ibatis的简单实现需要添加ibatis-core,jdom和ibatis-sqlmap组件的依赖,配置SqlMapConfig.xml文件,添加映射文件的配置。下面是详细步骤:
- 添加依赖
在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.ibatis</groupId>
<artifactId>ibatis-core</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.3.4.726</version>
</dependency>
- 配置SqlMapConfig.xml文件
在resources目录下建立SqlMapConfig.xml文件,并添加以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true"/>
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
<!--添加mapper配置文件-->
<mappers>
<mapper resource="com/xxx/userMapper.xml"/>
</mappers>
</sqlMapConfig>
该文件主要包含了数据源的配置和添加Mapper配置文件。
- 添加Mapper配置文件
在自定义的包com.xxx下建立UserMapper.xml文件,并添加以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="UserMapper">
<select id="getUserById" parameterClass="java.lang.Integer" resultClass="java.lang.Object">
select * from user where id = #value#
</select>
</sqlMap>
这里只是简单的实现了查询单个用户的功能。此处select语句中含有一个#value#的占位符,这个占位符的值将由Java代码给出。
- 编写Java代码
接下来编写Java代码,定义一个getUserById的方法,在方法中调用ibatis进行查询。代码如下:
public User getUserById(int id) {
SqlMapClient sqlMapClient = null;
User user = null;
try {
Reader reader = Resources.getResourceAsReader("com/xxx/SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
user = (User) sqlMapClient.queryForObject("UserMapper.getUserById", id);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (sqlMapClient != null) {
sqlMapClient.endTransaction();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
该方法首先读取SqlMapConfig.xml文件,通过SqlMapClientBuilder构建SqlMapClient对象,然后使用SqlMapClient对象进行查询。这里的参数UserMapper.getUserById表示id为1(参数id)的用户信息将会从UserMapper.xml文件中读取。
2. 示例一:用户注册
下面以用户注册场景为例,讲述ibatis的配置和使用。
- 配置SqlMapConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true"/>
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
<mappers>
<mapper resource="com/xxx/userMapper.xml"/>
</mappers>
</sqlMapConfig>
- 编写UserMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="UserMapper">
<insert id="insertUser" parameterClass="com.xxx.User">
insert into user (username, password, email) values (#username#, #password#, #email#)
<selectKey resultClass="java.lang.Integer" keyProperty="id">
select last_insert_id()
</selectKey>
</insert>
</sqlMap>
- 编写Java代码
public void insertUser(User user) {
SqlMapClient sqlMapClient = null;
try {
Reader reader = Resources.getResourceAsReader("com/xxx/SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
sqlMapClient.insert("UserMapper.insertUser", user);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (sqlMapClient != null) {
sqlMapClient.endTransaction();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
该方法首先从SqlMapConfig.xml文件中读取数据库的配置信息,然后通过SqlMapClientBuilder创建SqlMapClient对象,并使用SqlMapClient对象插入用户信息。其中UserMapper.insertUser表示将用户信息插入到UserMapper.xml文件中的insertUser操作。
3. 示例二:管理员登录
下面以管理员登录场景为例,讲述ibatis的配置和使用。
- 配置SqlMapConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true"/>
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
<mappers>
<mapper resource="com/xxx/adminMapper.xml"/>
</mappers>
</sqlMapConfig>
- 编写AdminMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="AdminMapper">
<select id="getAdminByUsernameAndPassword" parameterClass="com.xxx.Admin" resultClass="com.xxx.Admin">
select * from admin where username = #username# and password = #password#
</select>
</sqlMap>
- 编写Java代码
public Admin getAdminByUsernameAndPassword(String username, String password) {
SqlMapClient sqlMapClient = null;
Admin admin = null;
try {
Reader reader = Resources.getResourceAsReader("com/xxx/SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
Admin param = new Admin();
param.setUsername(username);
param.setPassword(password);
admin = (Admin) sqlMapClient.queryForObject("AdminMapper.getAdminByUsernameAndPassword", param);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (sqlMapClient != null) {
sqlMapClient.endTransaction();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return admin;
}
该方法用于管理员登录,首先从SqlMapConfig.xml文件中读取数据库的配置信息,然后通过SqlMapClientBuilder创建SqlMapClient对象,并使用SqlMapClient对象查询管理员信息。其中AdminMapper.getAdminByUsernameAndPassword表示查询AdminMapper.xml文件中的getAdminByUsernameAndPassword操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ibatis简单实现与配置 - Python技术站