mybatis最小环境
上一期我们聊了如何使用Java制作爬虫,爬取的数据需要进行存储。我们可选mybatis作为存储的框架,而如果每次都从0开始,效率太慢。怎么办?先建一个最小mybatis的可运行环境,以后都基于这个小项目进行迭代开发,效率就能提高。
先新建一个maven的java项目,然后加入或修改这6个文件即可。后面这个最小环境就可以复用了。
准备工作
新建一个mysql库叫test,新建一个表:
CREATE TABLE `item` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `creator` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1.pom.xml
依赖mybatis,mysql,
写代码依赖gson,lombok
其它两个包是mybatis需要的
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <!--javassist与ognl是mybatis需要的 --> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.24.1-GA</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>ognl</groupId> <artifactId>ognl</artifactId> <version>3.2.10</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.16</version> <!-- 这个版本服务器tomcat会报错 <version>1.18.8</version> --> <!-- 1.16.16 mvn clean package命令在win10,jdk1.8下不好用 --> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> </dependencies>
2.准备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> <!-- 全局参数 --> <settings> <!-- 使全局的映射器启用或禁用缓存。 --> <setting name="cacheEnabled" value="true"/> <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 --> <setting name="aggressiveLazyLoading" value="false"/> <!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true --> <setting name="multipleResultSetsEnabled" value="true"/> <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true --> <setting name="useColumnLabel" value="true"/> <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false --> <setting name="useGeneratedKeys" value="false"/> <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 --> <setting name="autoMappingBehavior" value="PARTIAL"/> <!-- 这是默认的执行类型 (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新) --> <setting name="defaultExecutorType" value="SIMPLE"/> <!-- 使用驼峰命名法转换字段。 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session --> <setting name="localCacheScope" value="SESSION"/> <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 --> <setting name="jdbcTypeForNull" value="NULL"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true"/> <property name="username" value="root"/> <property name="password" value="xx"/> </dataSource> </environment> </environments> <mappers> <mapper resource="Item.xml"/> </mappers> </configuration>
3.准备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="net.highersoft.mybatis.ItemMapper"> <insert id="addInfo" parameterType="net.highersoft.mybatis.InfoEntry"> insert into item(name,create_time,creator) values(#{name},#{createTime},#{creator}) </insert> <select id="selectLastInfo" resultType="net.highersoft.mybatis.InfoEntry"> select * from item order by create_time desc limit 10 </select> </mapper>4.准备Mapper类
public interface ItemMapper { void addInfo(InfoEntry entry); List<InfoEntry> selectLastInfo(); }5.准备实体类
package net.highersoft.mybatis; import java.util.Date; import com.google.gson.Gson; import lombok.Data; //贴子 @Data public class InfoEntry { //主键 private int id; //文件名 private String name; //创建者 private String creator; //创建时间 private Date createTime; }6.准备测试类
package net.highersoft.mybatis; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.datasource.unpooled.UnpooledDataSource; import org.apache.ibatis.io.Resources; import org.apache.ibatis.mapping.Environment; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.transaction.TransactionFactory; import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import com.google.gson.Gson; public class DBService { private static SqlSessionFactory sqlSessionFactory; static { try { init(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void init() throws IOException { UnpooledDataSource dataSource = new UnpooledDataSource(); TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource); Configuration configuration = new Configuration(environment); configuration.addMapper(ItemMapper.class); String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } public static void add(List<InfoEntry> paramList) { SqlSession session = sqlSessionFactory.openSession(); ItemMapper mapper = session.getMapper(ItemMapper.class); for(InfoEntry param:paramList) { mapper.addInfo(param); } session.commit(); session.close(); } public static List<InfoEntry> selectLastInfo( ) { try (SqlSession session = sqlSessionFactory.openSession()) { return session.getMapper(ItemMapper.class).selectLastInfo(); } } public static void main(String args[]) { System.out.println(new Gson().toJson(selectLastInfo())); } }
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑