版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
* 约定在main文件夹下有Java源代码的Java文件夹和放有配置文件的resources文件夹
关于配置文件mybatis.cfg.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="UNPOOLED">
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
关于util包下的MybatisUtil.java里的内容示例:
package com.sz.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis.cfg.xml";
InputStream in = null;
try {
in = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}finally {
if (in != null){
try {
in.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
关于pojo包下的Girl.java内容示例
package com.sz.pojo;
import java.util.Date;
public class Girl {
private Long id;
private String name;
private String flower;
private Date birthday;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFlower() {
return flower;
}
public void setFlower(String flower) {
this.flower = flower;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
关于mapper包下的GirMapper.java示例
package com.sz.mapper;
import com.sz.pojo.Girl;
public interface GirlMapper {
int insert(Girl girl);
}
关于配置文件中com.sz.mapper.GirlMapper.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.sz.mapper.GirlMapper">
<insert id="insert">
insert into girl (name,flower,birthday) value (#{name},#{flower},#{birthday})
</insert>
</mapper>
关于测试类示例:
package com.sz;
import com.sz.mapper.GirlMapper;
import com.sz.pojo.Girl;
import com.sz.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.Date;
public class Test1 {
@Test
public void m1(){
SqlSession sqlSession = MybatisUtil.getSession();
GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);
Girl g = new Girl();
g.setName("LingXingRu");
g.setFlower("HuoJianHua");
g.setBirthday(new Date());
mapper.insert(g);
sqlSession.commit();
sqlSession.close();
}
}
关于mybatis.cfg.xml配置文件中各节点
- properties节点:resource引用了外部的jdbc.properties文件
- 外部引用的jdbc.properties文件级别高于properties内部的
<properties resource="jdbc.properties">
<property name="username" value="root"/>
<property name="password" value="123456"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
<property name="driver" value="com.mysql.jdbc.Driver"/>
</properties>
- typeAliases节点:给完整的类名注册一个简写的类名
<typeAliases>
<typeAlias type="com.sz.pojo.Girl" alias="girl"/>
<!-- package name="com.sz.pojo"/> -->
</typeAliases>
这样可以在写查询语句时:
<select id="queryById" resultType="com.sz.pojo.Girl">
select * from girl where id=#{id};
</select>
将“com.sz.pojo.Girl”简写为:“girl”
而如果使用了package就会将注册的包下的所有类全部注册,默认为简写类名
- mappers节点:
<mappers>
<!-- 通过类路径引入xml文件-->
<mapper resource="com/sz/mapper/GirlMapper.xml"/>
<!-- 直接将这个包下的所有Mapper全部引入,不需要重新引入,一劳永逸-->
<package name="com.sz.mapper"/>
</mappers>
mytabis关于参数问题
- 单个参数问题基本没有问题
传入多个参数时可以再mapper接口中申明
Girl queryByNameFlower(@Param("name") String name,@Param("flower") String flower);
加上@Param("name")即可对name进行申明,进而在sql语句中可以这么写:
<select id="queryByNameFlower" resultType="com.sz.pojo.Girl">
select * from girl where name = #{name} and flower = #{flower}
</select>
否则只能这么写:
<select id="queryByNameFlower" resultType="com.sz.pojo.Girl">
select * from girl where name = #{arg0} and flower = #{arg1}
</select>