一. 关于配置文件
1.新建 resoures 包然后在 右键找到
2.在新建 lib 包
3.把 mybatis-3.5.10.jar 架包 和 mybatis-3.5.10.jar 架包, 放到lib包下, 导入数据库
4.打开设置
5.
6.
3里面的内容
<?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> //调用 database.properties文件获取连接什么的 <properties resource="database.properties"></properties> <settings> <setting name="autoMappingBehavior" value="FULL"/> // log 4 <setting name="logImpl" value="LOG4J" /> </settings> <typeAliases> //实体类的别名 <package name="com.pojo"/> </typeAliases> <!-- 分页插件拦截--> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${user}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> //调用方法 <package name="com.mapper"/> </mappers> </configuration>
7.然后在resoures 包下
新建
新建名字用 mybatis-config.xml 完成之后
然后在新建一个 file
名字要用 database.properties
内容为
// driver 要和 mybatis-config.xml 的一样 driver=com.mysql.cj.jdbc.Driver // url 要和 mybatis-config.xml 的一样 cvs_db 数据库名字 url=jdbc:mysql://127.0.0.1:3306/cvs_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull // user 要和 mybatis-config.xml 的一样 root 用户名 user=root // password 要和 mybatis-config.xml 的一样 zyf200413 密码 password=zyf200413
然后在 resoures 包下的 mybatis-config.xml ,在configuration 标签下新建一个 properties 标签
resource属性 写 地址
// resource 地址 <properties resource="database.properties"></properties>
8.
在src包下新建 pojo 包 用于存放实体类
然后在src包下新建 Mapper 包 用于存放 接口
然后在src包下新建 text包 用于存放 测试类
在Mapper接口下写方法和和转换的方法
转换方法里面的内容
<?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 接口地址 <mapper namespace="com.Mapper.T_storage_recordMapper"> // id 方法 resultType 返回值 parameterType 参数 <select id="t_storage_recordSum" resultType="double" parameterType="String"> //sql语句 SELECT SUM(totalAmount) FROM `t_storage_record` WHERE goodsDesc LIKE '%${goodsDesc}%' </select> </mapper>
mapper 属性的 namespace 是接口地址
如果是新增里面就是 insert
<insert id=""> </insert>
修改就是 update
<update id=""> </update>
删除 delete
<delete id=""> </delete>
parameterType 参数 如果是对象什么的,就要在 resoures 包下的 mybatis-config.xml
configuration标签下新建 typeAliases 标签,然后在typeAliases下新建,package 标签
name属性 写地址
<configuration> <typeAliases> // com.POJO 这个包下的所有的类 <package name="com.POJO"/> </typeAliases> </configuration>
然后在 configuration 标签下新建 mappers标签然后在mappers下新建 package标签
name属性 写地址
<configuration> <mappers> // com.Mapper 这个包下的所以方法 <package name="com.Mapper"/> </mappers> </configuration>
9. 在text包下新建测试类
// 创建 SqlSession 实例 SqlSession session=null; Scanner input=new Scanner(System.in); try { // 读取MyBatis框架路径 String path="mybatis-config.xml"; // 获取MyBatis-config.xml 的输入流 InputStream is= Resources.getResourceAsStream(path); //使用 SqlSessionFactoryBuilder读取配置文件 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); // SqlSessionFactory 实例 SqlSessionFactory factory=builder.build(is); session=factory.openSession(); // 用接口 = SqlSessionFactory 实例.getMapper(里面放接口.class) T_storage_recordMapper t_storage_recordMapper=session.getMapper(T_storage_recordMapper.class); System.out.println("请输入查的类型:"); String goodsDesc=input.next(); //调用方法 double count=t_storage_recordMapper.t_storage_recordSum(goodsDesc); System.out.println(count); }catch (Exception e){ e.printStackTrace(); }finally { // 关闭 session.close(); }
二.mapper接口
1.
<?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 写 路径 <mapper namespace="com.mapper.DistrictMappper"> // 在mapper 里面写 增 删 改 查 resultType 方法的类型 parameterType 参数 <select id="districtSelect" resultType="District"> SELECT * FROM `district` </select> </mapper>
2. 连表查询语句
1.一对一
先在实体类中新增一个属性
private District district;
mapper.xml 中的配置
// id 为方法名 resultMap 自定义 一般是方法名后加resultMap <select id="air_quality_indexLian" resultMap="air_quality_indexLianResultMap"> SELECT * FROM `air_quality_index` a,`district` d WHERE a.`districtId`=d.`id` </select> // id 和 resultMap 要一样 type 返回的类型 <resultMap id="air_quality_indexLianResultMap" type="Air_quality_index"> // column 主键 id property 实体类 相对应的属性 <id column="id" property="id"></id> // property 哪个表 column 表主键 javaType 表对应的实体类 <association property="district" column="id" javaType="District"></association> </resultMap>
调用里面值的时候,用 District 点属性 例如:
for (Air_quality_index a:list) { a.getDistrict().getName(); }
2.一对多
在实体类 中新增属性
private List<T_storage_record> t_storage_recordList;
在mapper.xml 中的配置
// id 方法名 resultMap 自定义 一般用 方法名后加 resultMap <select id="t_supplierLian" resultMap="t_supplierResultMap"> SELECT t.`supCode`,t.`supName`,t.`supDesc`,t.`supContact` FROM `t_supplier` t,`t_storage_record` s WHERE t.`id`=s.`supplierId` </select> // id 和 resultMap 名字一样 type 主类 <resultMap id="t_supplierResultMap" type="T_supplier"> // column 主键id property 属性 id <id column="id" property="id"></id> // property 自定义 的名字 ofType 类型 <collection property="t_storage_recordList" ofType="T_storage_record"></collection> </resultMap>
拿值
// 调用方法 List<T_supplier> list=t_supplierMapper.t_supplierLian(); // 喜欢 集合 for (T_supplier t:list) { // 用集合装 然后用 t.属性 List<T_storage_record> tStorageRecordList=t.getT_storage_recordList(); //在循环拿值 for (T_storage_record r:tStorageRecordList) { r.getGoodsName(); } }