1 导入mybatis.jar
2 项目src下创建mybatis的配置文件
2.1 编辑配置文件
<?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>
<typeAliases>
<typeAlias type="my.batis.User" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="12345678"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="my/batis/UserMapper.xml"/>
</mappers>
</configuration>
到此最基本的配置已经完成,可以使用mybatis啦
加载mybatis
private SqlSessionFactory openSession() throws IOException {
String resource = "configuration.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
分两种方式使用mybatis做sql查询
1 注解
2 xml配置映射
由于注解一般只用于简单的sql查询使用,毕竟注解能力有限,我们忽略注解方式直接使用配置映射作为🌰(结构如下:)
新建一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="my.batis.UserMapper">
<resultMap id="user" type="User">
<constructor></constructor>
<result column="id" javaType="java.lang.Integer" property="id"/>
<result column="age" javaType="java.lang.Integer" property="age"/>
<result column="name" javaType="java.lang.String" jdbcType="VARCHAR" property="name"/>
</resultMap>
<select id="findAll" resultType="user">
select id, name ,age from user <where>
<if test="name !=null ">
name like #{name}
</if>
</where>
</select>
<insert id="addUser" useGeneratedKeys="true" keyProperty="id" parameterType="User">
insert into user(name, age) values (#{name}, #{age})
</insert>
<insert id="addUsers" useGeneratedKeys="true" keyProperty="id" >
insert into user (name, age) values
<foreach collection="list" item="user" separator=",">
(#{user.name}, #{user.age})
</foreach>
</insert>
</mapper>
(非必须)创建interface作为映射方便代码查阅调用
public interface UserMapper {
List<User> findAll();
int addUser(User user);
int addUsers(List<User> users);
}
实例调用
try {
SqlSession sqlSession = openSession().openSession();//打开sqlsession
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//获取对应的xml映射出的UserMapper
my.batis.User user = new my.batis.User();
user.setAge(30);
user.setName("HHHHH");
int autoId = userMapper.addUser(user);
user.setId(autoId);
model.addAttribute("user", user);
int addUserResult = this.userService.addUser(new User(user.getName(), user.getAge(), user.getId()));
model.addAttribute("msg", "插入结果:" + addUserResult);
} catch (IOException e) {
e.printStackTrace();
}
注意 通常来说mybatissql转化bean的时候不需要构造函数,会调用默认构造函数,然后反射setter/getter进行赋值,假如您手动写构造函数它会以您的构造函数为主,为避免赋值调用错误,记得在xml中配置对应的构造