在mybatis快速入门中有些地方可以优化:
1.可以把mybatis配置文件和操作文件开,方便管理,src源文件夹放操作文件,创一个resources源文件夹放mybatis配置文件。
2mybatis配置文件中的数据源配置可以单独放到一个db.properties(属性文件)。
db.properties文件(放在和mybatis配置文件同目录下): #数据源(数据库)配置信息 driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/mybatis username=root password=123 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> <!-- 导入属性文件 --> <properties resource="db.properties"></properties> <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="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- 配置映射文件UserMapper.xml --> <mappers> <mapper resource="com/zhiyou100/kfs/mapper/UsersMapper.xml"/> </mappers> </configuration> |
3.加入log4j日志文件(加入lo4j的jar包和配置一个log4j.properties)只能是这个名称:
log4j.properties, log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG |
4.可以为java的类或包起别名,这样可以不用写全类名那么麻烦。
<typeAliases> <!-- typeAlias:为类起别名,用_Users 调用--> <typeAlias type="com.zhiyou100.kfs.bean.Users" alias="_Users"/> </typeAliases> |
<typeAliases> <!-- package:为包起别名,包内的类可以直接用类名调用 --> <package name="com.zhiyou100.kfs"/> </typeAliases> |
5.UserMapper.xml映射文件结合UserMapper.dao接口一起使用
UserMapper.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"> <!-- namespace是命名空间,和dao一起那么namespace要和dao全类名一致 --> <mapper namespace="com.zhiyou100.kfs.dao.UserMapper"> <!-- id:相当于dao接口方法名称, parameterType:传入参数类型(输入类型),要写全类名,相当于dao里的参数列表类型 resultType:传出参数类型(输出类型),要写全类名,相当于道理的返回值类型 --> <!-- 通过id查询 --> <select id="selectById" parameterType="int" resultType="com.zhiyou100.kfs.bean.Users"> select * from users where id=#{id} </select> </mapper> |
UserMapper.java接口: package com.zhiyou100.kfs.dao; import com.zhiyou100.kfs.bean.Users; public interface UserMapper { /** * 根据id查询用户 * @param id * @return */ /* * 方法名和UserMapper.xml里的id一致 * 输入参数要和UserMapper.xml里的parameterType类型一致 * 输出结果集要和UserMapper.xml里的resultType类型一致 */ public Users selectById(int id); } |
单元测试: @Test void test() throws Exception { //1.获取配置文件config.xml加入到io流中 InputStream inputStream = Resources.getResourceAsStream("config.xml"); //2.通过SqlSessionFatoryBuilder的builder创建sqlsessionfatory SqlSessionFactory sqlSessionFatory = new SqlSessionFactoryBuilder().build(inputStream); //3.通过sqlSessionFactory的openSession方法创建SqlSession SqlSession sqlSession=sqlSessionFatory.openSession(); //4.通过sqlSession的getMapper传入dao全类名的方法创建UserMapper对象 UserMapper um=sqlSession.getMapper(com.zhiyou100.kfs.dao.UserMapper.class); //5.调用UserMapper的selectById来使用通过id查询一个用户 Users user=um.selectById(1); System.out.println(user); //最后一个页是很重要的一个:关闭资源 sqlSession.close(); } |