一 Maven项目结构如下
这个案例中首先创建一个
这个是父项目,起下面包含三个子项目
1 mapper Maven的映射
2 pojo 为对象的实体类
3 service 为调用mapper映射的各种SQL执行动作。
二 父项目的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zxf</groupId>
<artifactId>mybatisProject2</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mybatisProject2-pojo</module>
<module>mybatisProject2-mapper</module>
<module>mybatisProject3-serveice</module>
</modules>
<!--对依赖的坐标的版本做集中管理-->
<properties>
<junit.version>4.12</junit.version>
<mybatis.version>3.2.8</mybatis.version>
<mysql.version>5.1.32</mysql.version>
<jstl.version>1.2</jstl.version>
<servlet.version>3.1.0</servlet.version>
<jsp.version>2.0</jsp.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--jsp&servlet-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!--配置资源拷贝插件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resouces</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
</project>
三 编写pojo实体类对象
1 pojo中的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mybatisProject2</artifactId>
<groupId>com.zxf</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatisProject2-pojo</artifactId>
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
2 pojo中的实体类
1 表结构如下
2 Java对象
package com.zxf.pojo;
public class Flower {
private Integer id;
private String name;
private Float price;
private String production;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public String getProduction() {
return production;
}
public void setProduction(String production) {
this.production = production;
}
}
四 mapper项目模块
1 pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mybatisProject2</artifactId>
<groupId>com.zxf</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatisProject2-mapper</artifactId>
<dependencies>
<dependency>
<artifactId>mybatisProject2-pojo</artifactId>
<groupId>com.zxf</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
2 接口程序
package com.zxf.mapper;
import com.zxf.pojo.Flower;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface FlowerMapper {
//采用了注解的方式
@Select("select * from flower")
public List<Flower> getAll();
public List<Flower> getAll2();
public int saveFlower(Flower flower);
public void updateFlower(Flower flower);
public void delFlower(Integer i);
public Flower findByidFlower(Integer i);
public List<Flower> findBylike(@Param("name") String name);
public int getAllSize();
}
因为采用的动态代理,所有这里不用编写接口的实现类。
3 接口对应的.xml映射文件
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.zxf.mapper.FlowerMapper">
<select id="getAll2" resultType="flower">
select * from flower
</select>
<insert id="saveFlower" parameterType="flower">
INSERT flower(name,price,production) VALUES (#{name},#{price},#{production})
</insert>
<update id="updateFlower" parameterType="flower">
UPDATE flower set name=#{name},price=#{price},production=#{production}
where id=#{id}
</update>
<delete id="delFlower" parameterType="int">
DELETE from flower where id=#{id}
</delete>
<select id="findByidFlower" parameterType="int" resultType="flower">
SELECT * from flower where id=#{id}
</select>
<select id="findBylike" parameterType="string" resultType="flower">
SELECT * from flower where name like #{name}
</select>
<select id="getAllSize" resultType="int">
select count(*) from flower;
</select>
</mapper>
五 service模块
1 mybatis的核心配置文件,也是加载数据库和接口映射文件
zhangMyBatis.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 resource="jdbc.properties"/>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="com.zxf.pojo"/>
</typeAliases>
<!-- default引用environment的id,当前所使用的环境 -->
<environments default="abc">
<environment id="abc">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.zxf.mapper.LogMapper"/>
<mapper class="com.zxf.mapper.UsersMapper"/>
<mapper class="com.zxf.mapper.FlowerMapper"/>
</mappers>
</configuration>
2 jdbc配置的属性文件
jdbc
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.0.148:3306/test
jdbc.user=root
jdbc.password=abc123
2 pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mybatisProject2</artifactId>
<groupId>com.zxf</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatisProject3-serveice</artifactId>
<dependencies>
<dependency>
<artifactId>mybatisProject2-mapper</artifactId>
<groupId>com.zxf</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
</dependencies>
</project>
3 最后的junit的测试文件程序
package com.zxf;
import com.zxf.mapper.FlowerMapper;
import com.zxf.pojo.Flower;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
public class Test2 {
private SqlSessionFactory sqlSessionFactory;
private SqlSession session;
private FlowerMapper flowerMapper;
private InputStream is;
@Before //用于测试方法之前执行。
public void init() throws Exception{
is= Resources.getResourceAsStream("zhangMyBatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
session=sqlSessionFactory.openSession();
flowerMapper=session.getMapper(FlowerMapper.class);
}
@After //用于测试方法之后执行。
public void destory()throws Exception{
session.commit();
session.close();
is.close();
}
//调用的注解那个方法
@Test
public void test1()throws Exception{
List<Flower> flowers=flowerMapper.getAll();
for(Flower f:flowers){
System.out.println(f.getName());
}
}
//查询所有的方法
@Test
public void test2()throws Exception{
List<Flower> flowers=flowerMapper.getAll2();
for(Flower f:flowers){
System.out.println(f.getId()+"-->"+f.getName()+","+f.getProduction());
}
}
//增加
@Test
public void test3()throws Exception{
Flower flower=new Flower();
flower.setProduction("在看看吧");
flower.setPrice(92.89F);
flower.setName("程序可以不");
int i=flowerMapper.saveFlower(flower);
}
//修改
@Test
public void test4()throws Exception{
Flower flower=new Flower();
flower.setId(1414);
flower.setProduction("开始修改了");
flower.setPrice(63.9F);
flower.setName("看看修改结果吧");
flowerMapper.updateFlower(flower);
}
//删除
@Test
public void test5()throws Exception{
flowerMapper.delFlower(1413);
}
//查询
@Test
public void test6()throws Exception{
Flower byidFlower = flowerMapper.findByidFlower(1);
System.out.println(byidFlower.getId()+":"+byidFlower.getName()+","+byidFlower.getProduction());
}
//模糊查询
@Test
public void test7()throws Exception{
List <Flower>fs = flowerMapper.findBylike("%1%");
for(Flower flower:fs){
System.out.println(flower.getId()+":"+flower.getName()+","+flower.getProduction());
}
}
//返回聚合函数 总记录条数
@Test
public void test8()throws Exception{
int allSize = flowerMapper.getAllSize();
System.out.println(allSize);
}
}
以上程序是可以跑通的,大家可以通过IDEA工具创建Maven项目去实践一下吧。
如果在编写过程中遇到问题,可以在留言给我留言。