Mybatis简单使用
程序员文章站
2022-05-29 17:49:41
...
第一步:导包
第二步:写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>
<!--1.配置环境 ,默认的环境id为mysql -->
<!--2.配置Mapper的位置 -->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/CustomerMapper.xml"/>
<mapper resource = "mapper/CustomerMapper2.xml"/>
</mappers>
</configuration>
<!-- 加载Java配置文件或声明属性信息 -->
其中
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
这个节点是用来配置数据库环境的 可以配置多环境 但是默认环境只有一个
<mappers>
<mapper resource="mapper/CustomerMapper.xml"/>
<mapper resource = "mapper/CustomerMapper2.xml"/>
</mappers>
这个节点是用来导入mapper.xml配置文件->每写一个mapper.xml要是用都需要在这个节点添加子节点引入
编写一个测试接口
package dao;
import java.util.List;
import pojo.Customer;
public interface ICustomerDao {
Customer findCustomerByName(String name);
void deleteCustomerById(int id);
void updateCustomer(Customer customer);
void insertCustomer(Customer customer);
List<Customer> getAllCustomer();
}
这里定义简单的增删改查功能
然后为这个接口写一个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">
<mapper namespace="dao.ICustomerDao">
<!-- 根据id查询单条数据 -->
<select id="findCustomerByName" parameterType="String"
resultType="pojo.Customer">
SELECT * FROM t_customer where username = #{username}
</select>
<select id="deleteCustomerById" parameterType="Integer">
DELETE FROM t_customer WHERE ID = #{id}
</select>
<select id="updateCustomer" parameterType="pojo.Customer">
UPDATE t_customer SET ID = #{id},username =
#{username},jobs = #{jobs},phone = #{phone} where id = #{id}
</select>
<select id="insertCustomer" parameterType="pojo.Customer">
INSERT INTO t_customer (ID,USERNAME,JOBS,PHONE) VALUES
(#{id},#{username},#{jobs},#{phone})
</select>
<select id="getAllCustomer" resultType="pojo.Customer">
SELECT * FROM t_customer
</select>
</mapper>
namespace 一定要是全类名 一般都是包名.类名
每一个<select>节点都对应一个方法 id 对应方法名 paramerterType对应参数类型 resultType对应返回值类型
这里需要注意的是假如查询的不止一条数据 我们以单条数据的数据类型为返回值类型 Mybatis会自动将多条数据封装
成一个List集合见上面代码最后一个节点
<select id="getAllCustomer" resultType="pojo.Customer">
SELECT * FROM t_customer
</select>
所对应的方法
List<Customer> getAllCustomer();
然后编写测试类
package test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import dao.ICustomerDao;
import pojo.Customer;
public class MybatisTest {
public static void main(String[] args) {
// method1();
InputStream is;
try {
is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession =sessionFactory.openSession();
ICustomerDao dao = sqlSession.getMapper(ICustomerDao.class);
// Customer customer = dao.findCustomerByName("joy");
Customer customer = new Customer();
customer .setId(5);
customer.setJobs("学生");customer.setPhone("13459862825");customer.setUsername("老李");
// dao.deleteCustomerById(1);
// dao.insertCustomer(customer);
// dao.updateCustomer(customer);
List<Customer> list = dao.getAllCustomer();
for (Customer customer2 : list) {
System.out.println(customer2);
}
// System.out.println(customer);
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这个测试的是getAllCustomer()方法 结果如下