Mybatis
简单使用
1. 导入jar包
注:版本无所谓 配置数据库连接属性文件时注意就行
2.配置数据库连接属性文件
mybatis.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>
<!-- 不同的环境 -->
<environments default="development">
<!-- 多个待选择环境 -->
<environment id="development">
<!-- 使用JDBC原生事务管理 -->
<transactionManager type="JDBC" />
<!-- 连接池管理 -->
<dataSource type="POOLED">
<!-- 数据库连接配置 同JDBC -->
<property name="driver" value="com.mysql.jdbc.Driver" /><!-- mysql连接 高版本 com.mysql.cj.jdbc.Driver -->
<property name="url"
value="jdbc:mysql://localhost:3306/test" /><!-- test 数据库名字 -->
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- sql语句映射文件 原则上一个表一个xml文件 用来sql语句-->
<mappers>
<mapper resource="com/one/mapper/flowerMapper.xml" />
</mappers>
</configuration>
3.编写映射文件 书写sql语句
flowerMapper.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="com.one.mapper.FlowerMapper">
<!-- id :方法名 按名字匹配函数 resultTyoe: 返回值类型 parameterType: 定义参数类型 -->
<select id="selectAll" resultType="com.one.bean.Flower">
select * from flower
</select>
<!-- id :方法名 按名字匹配函数 resultTyoe: 返回值类型 parameterType: 定义参数类型 -->
<insert id = "insertFlower" parameterType="com.one.bean.Flower">
insert into flower values(default,#{name},#{price},#{production})
</insert>
<!-- id :方法名 按名字匹配函数 resultTyoe: 返回值类型 parameterType: 定义参数类型 -->
<update id = "upd" parameterType="map">
update flower set name = #{name} where id = #{id}
</update>
<delete id = "del">
</delete>
</mapper>
4.利用mybatis访问数据库
测试代码
Mytest.java
public class MyTest {
public static void main(String[] args) throws IOException {
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsession = sessionFactory.openSession();
// //查
// List<Flower> list = sqlsession.selectList("com.one.mapper.FlowerMapper.selectAll");
// for (Flower flower : list) {
// System.out.println(flower.getId());
// }
// //增
// Flower oneFlower = new Flower();
// oneFlower.setName("西兰花");
// oneFlower.setPrice(2.0);
// oneFlower.setProduction("china");
// int end1 = sqlsession.insert("com.one.mapper.FlowerMapper.insertFlower", oneFlower);
// System.out.println(end1>0?"insert success":"insert fail");
//改
Map<String ,String > map = new HashMap<>();
map.put("id", "3");
map.put("name","向日葵");
int end2 = sqlsession.update("com.one.mapper.FlowerMapper.upd",map);
System.out.println(end2);
System.out.println(end2>0?"update success":"update fail");
sqlsession.commit();//对数据库进行改变 必须提交
sqlsession.close();
}
}
实体类
com.one.bean.Flower
实体类和数据库名字对应 或者使用 别名 进行对应
在不使用 resultMap 的情况下
mybatis 的AutoMapping 机制是 查询所得的列名 与 resultType 中的属性一一对应
标题
mybatis 接口绑定和 参数传递
https://blog.youkuaiyun.com/YIPUTILIU/article/details/108131532