如何在IDEA中使用mybatis创建项目并进行增删改查操作
1、新建一个项目;
2、导入相关的依赖包;
3、配置mybatis主配置文件,连接信息和mapper位置等;
①mybatis主配置文件
<?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> <!--引入jdbc.properties配置文件--> <properties resource="jdbc.properties"></properties> <!--mybatis设置项--> <settings> <!--开启日志,将日志信息打印到控制台--> <setting name="logImpl" value="STDOUT_LOGGING" /> <!--开启缓存,默认开启--> <setting name="cacheEnabled" value="true"/> <!--设置延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> <!----> <setting name="aggressiveLazyLoading" value="false"/> </settings> <!-- 配置实体类别名 --> <typeAliases> <!-- 配置实体类所在包 --> <package name="com.seecen.mybatis3.pojo"/> </typeAliases> <!----> <!--数据库连接池信息--> <environments default="oracledb"> <environment id="oracledb"> <!--配置事务管理方式,指定为使用jdbc的事务--> <transactionManager type="jdbc"></transactionManager> <!--指定数据源,type pooled指定为连接池--> <dataSource type="pooled"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 配置mapper.xml文件位置 --> <mappers> <!--指定mapper文件所在包--> <package name="com.seecen.mybatis3.mapper"/> </mappers> </configuration>
②连接信息jdbc:properties;
jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@localhost:1521:xe jdbc.username=sc2001 jdbc.password=sun #\u9A71\u52A8jar\u5305\u7684\u4F4D\u7F6E,\u5177\u4F53\u7684\u8DEF\u5F84\u3002\u9006\u5411\u751F\u6210\u4EE3\u7801\u65F6\u4F7F\u7528 driverClassPath=C:\\Users\\Administrator\\.m2\\repository\\com\\oracle\\ojdbc6\\11.2.0.3.0\\ojdbc6-11.2.0.3.0.jar
③配置配置文件generatorConfig.xml;
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" > <generatorConfiguration> <!--加载jdbc.properties配置文件--> <properties resource="jdbc.properties" /> <!--配置驱动jar包的位置--> <classPathEntry location="${driverClassPath}" /> <!-- context:生成一组对象的环境 id:必选,上下文id,用于在生成错误时提示 defaultModelType:指定生成对象的样式 1,conditional:类似hierarchical; 2,flat:所有内容(主键,blob)等全部生成在一个对象中; 3,hierarchical:主键生成一个XXKey对象(key class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class) targetRuntime: 1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample; 2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample; introspectedColumnImpl:类全限定名,用于扩展MBG --> <context id="context1" targetRuntime="MyBatis3"> <!-- genenat entity时,生成toString --> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <!-- generate entity时,生成serialVersionUID --> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <!--不生成注释--> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--配置数据库连接信息--> <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}" /> <!-- java模型创建器,是必须要的元素 负责:1,key类(见context的defaultModelType);2,java类;3,查询类 targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制; targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录 --> <javaModelGenerator targetPackage="com.seecen.mybatis.pojo" targetProject="src/main/java"> <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成SQL map的XML文件生成器, 注意,在Mybatis3之后,我们可以使用mapper.xml文件+Mapper接口(或者不用mapper接口), 或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的话,这个元素就必须配置 targetPackage/targetProject:同javaModelGenerator --> <sqlMapGenerator targetPackage="com.seecen.mybatis.mapper" targetProject="src/main/java"></sqlMapGenerator> <!-- 对于mybatis来说,即生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口 targetPackage/targetProject:同javaModelGenerator type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下): 1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML; 2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中; 3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML; 注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER --> <javaClientGenerator targetPackage="com.seecen.mybatis.mapper" targetProject="src/main/java" type="XMLMAPPER" /> <table tableName="t_course" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context> </generatorConfiguration>
这三个文件放入资源目录下面;
我的目录是这样的,仅供参考:
4、在pojo中创建一个Product.java的实体类文件;
package com.seecen.mybatis3.pojo; import java.io.Serializable; public class Product implements Serializable { private Integer id; private String name; 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; } @Override public String toString() { return "Product{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
4、编写Mapper对应的mapper.xml文件和接口,定义接口方法对应的sql语句;
ProductMapper文件和ProductMapper.xml文件:
package com.seecen.mybatis3.mapper; import com.seecen.mybatis3.pojo.Product; import java.util.List; public interface ProductMapper { int insert(Product product); int deleteById(Integer id); int update(Product product); Product selectById(Integer id); List<Product> selectAll(); }
<?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.seecen.mybatis3.mapper.ProductMapper"> <insert id="insert" parameterType="Product"> <selectKey keyProperty="id" order="BEFORE" resultType="integer"> select p_pro.nextval from dual </selectKey> insert into Product(id,name) values(#{id},#{name}) </insert> <update id="update" parameterType="Product"> update Product set name = #{name} where id=#{id} </update> <delete id="deleteById"> delete from Product where id=#{id} </delete> <select id="selectById" parameterType="integer" resultType="Product"> select * from Product where id=#{id} </select> <select id="selectAll" resultType="Product"> select * from Product </select> </mapper>
5、编写dao层访问接口Mapper,用来定义数据库操作方法;
import com.seecen.mybatis3.mapper.ProductMapper; import com.seecen.mybatis3.pojo.Product; 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 org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class ProductTest { @Test public void Test() throws IOException { InputStream is= Resources.getResourceAsStream("mybatis.xml"); SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is); SqlSession sqlSession=sqlSessionFactory.openSession(); ProductMapper mapper=sqlSession.getMapper(ProductMapper.class); //插入一条数据 Product product=new Product(); product.setName("三只松鼠"); int count=mapper.insert(product); System.out.println("插入记录数:"+count); System.out.println(product); //删除一条记录 int count1=mapper.deleteById(1); System.out.println(count1); //查询一条记录 Product product1=mapper.selectById(2); System.out.println(product1); //修改一条记录 product1.setName("一包薯片"); int i=mapper.update(product1); System.out.println("修改记录数:"+i); //查询所有的信息 List<Product> products=mapper.selectAll(); for (Product product2:products){ System.out.println(product2); } sqlSession.commit(); sqlSession.close(); is.close(); } }
最后,一定要多注意一些语法的规范或者要试着去查看错误信息,以便更好的修改错误。