mybatis简单环境搭建,新手入门使用
1、引入mybatis所需jar包
2、mybatis配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 这个为没有与其他框架进行整合的配置方式,与其他框架整合后配置方式不同 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=gbk"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
3、pojo
package model;
import java.util.Date;
public class User {
private Integer id;
private String userName;
private Date birthday;
private String sex;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", birthday=" + birthday + ", sex=" + sex + ", address="
+ address + "]";
}
}
4、mapper配置文件
<?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">
<!-- 命名空间一般与pojo同名 -->
<mapper namespace="User">
<!--
查询用户
如果参数是简单类型#{}的值可以是任意
resultType查询出的单条记录的类型
-->
<select id="findUserById" parameterType="int" resultType="model.User">
select * from users where id = #{value}
</select>
<!-- 模糊查询 -->
<!--${}表示拼接字符串,会有sql注入问题 如果参数是简单类型值只能为value -->
<select id="findUserByName" parameterType="java.lang.String" resultType="model.User">
select id,username,birthday,sex,address from test.users where username like '%${value}%'
</select>
<!-- 插入用户 -->
<insert id="insert" parameterType="model.User">
<!--将插入的数据的主键返回到插入的数据中,只对自增主键有用 -->
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
<!-- 通过uuid()生成主键时返回主键的方法,oriclede sequence生成主键也这样返回
<insert id="insert" parameterType="model.User">
<selectKey keyProperty="id" order="BEFORE" resultType="string">
select uuid()
</selectKey>
insert into users(id,userName,birthday,sex,address) values(#{id},#{userName},#{birthday},#{sex},#{address})
</insert>
-->
insert into users(userName,birthday,sex,address) values(#{userName},#{birthday},#{sex},#{address})
</insert>
<!-- 更新用户 -->
<update id="updateuserById" parameterType="model.User">
update users set username=#{userName},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>
<!--删除用户 -->
<delete id="deleteUserById" parameterType="int">
delete from users where id=#{value}
</delete>
</mapper>
5、mappre配置完后需要加到mybatis配置文件中
<pre name="code" class="html"> <mappers>
<!-- 注意文件位置 -->
<mapper resource="mapper/User.xml"/>
</mappers>
6、test类
@Test
public void findUserById() throws IOException{
//sqlMapConfig的位置和名称
String resource = "sqlMapConfig.xml";
//获取sqlMapConfig配置文件留
InputStream inputstream = Resources.getResourceAsStream(resource);
//获得SqlSessionFactory工厂
SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(inputstream);
//同过工厂获得sqlsession
SqlSession sqlSession = factory.openSession();
User user = (User)sqlSession.selectOne("User.findUserById",1);
sqlSession.close();
//System.out.println(user.toString());
}
@Test
public void findUserByName() throws IOException{
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession();
List<Object> users = session.selectList("User.findUserByName", "张三");
session.close();
System.out.println(users);
}
@Test
public void insert() throws IOException{
User user = new User();
user.setUserName("张三");
user.setSex("女");
user.setAddress("白金");
user.setBirthday(new Date());
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession();
session.insert("User.insert", user);
session.commit();
session.close();
System.out.println(user);
}
@Test
public void updateuserById() throws IOException{
User user = new User();
user.setUserName("李四");
user.setSex("男");
user.setAddress("上海");
user.setBirthday(new Date());
user.setId(3);
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession();
session.update("User.updateuserById", user);
session.commit();
session.close();
}
@Test
public void deleteUserById() throws IOException{
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession();
session.update("User.deleteUserById",5);
session.commit();
session.close();
}
为了方便查看执行的sql一般还需要配置log4j
log4j.rootLogger=DEBUG,CONSOLE
log4j.addivity.org.apache=false
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} -%-4r [%t] %-5p %x - %m%n
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=gbk
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout