myBatis工程结构(代码引用自某教学视频)
1 在工程下创建Source Folder文件夹:
这个文件夹下存放三个重要文件:
log4j.properties,,该文件用户显示日志,文件内容基本固定如下:
# Global logging configuration
#\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u65e5\u5fd7\u7ea7\u522b\u8981\u8bbe\u7f6e\u6210DEBUG\uff0c\u751f\u4ea7\u73af\u5883\u8bbe\u7f6e\u6210info\u6216error
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
如果调试log4j.rootLogger等于DEBUG 如果是上线则使用error或者info。
SqlMapConfig.xml 这个文件时mybatis的配置文件,文件名可以随意起,在代码中通过下面语句注入,用于生成会话工厂
该文件主要用于记录数据库账号密码,驱动等信息,以及后面编写的mapper文件
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
文件内容如下:
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
最后一个文件就是自己编写的mapper文件,这个文件就是数据库操作的实现文件
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT LAST_INSERT_ID()
insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
delete from user where id=#{id}
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id=#{id}
这三个文件写好后,就可以开始编写代码了
@Test
public void testSelect() throws IOException
{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = (User)sqlSession.selectOne("test.findUserById", 14);
sqlSession.close();
System.out.println(user);
}
如上通过session来操作,"test.findUserById"表示使用id为test的mapper文件findUserById表示mapper文件内的操作模块,14是传递的查询参数
最后关闭session
另外myBatis支持mapper代理的方式操作数据库,这种方式为程序员省略了DAO实现类的编写,程序员只要编写DAO接口类即可自动生成实现类
首先定义mapper.xml文件,文件中mapper的namespace的值为DAO接口的地址,如UserMapper.java在com.abc.mapper包下,那么namespace=“com.abc.mapper.UserMapper”,然后在UserMapper.java中实现数据库操作,函数名需要与mapper.xml文件中的statement的id相同,输入参数与parameterType相同,输出参数与resultType相同。
在测试类中使用方式如下:
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findUserById(14);
sqlSession.close();