定义sql映射xml文件:userMapper.xml
<insert id="insertUser" parameterType="com.xxx.bean.User">
insert into users(name, age) values(#{name}, #{age});
</insert>
<delete id="deleteUser" parameterType="int">
delete from users where id=#{id}
</delete>
<update id="updateUser" parameterType="com.xxx.bean.User">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<select id="selectUser" parameterType="int" resultType="com.xxx.bean.User">
select * from users where id=#{id}
</select>
<select id="selectAllUsers" resultType="com.xxx.bean.User">
select * from users
</select>
在config.xml中注册这个映射文件
<mapper resource=" com/xxx/bean/userMapper.xml"/>
在dao中调用:
@Test
public void getAllTest() throws IOException {
SqlSession session = MyBatisUtil.getSessionFactory().openSession(true);
String statement = "com.xxx.userMapper.getAllUsers";
List<User> arrList = session.selectList(statement);
session.close();
System.out.println(arrList);
}
@Test
public void deleteTest() throws IOException {
SqlSession session = MyBatisUtil.getSessionFactory().openSession(true);
String statement = "com.xxx.userMapper.deleteUser";
int result = session.delete(statement, 4);
session.close();
System.out.println(result);
}
@Test
public void updateTest() throws IOException {
SqlSession session = MyBatisUtil.getSessionFactory().openSession();
String statement = "com.cbgd.userMapper.updateUser";
int result = session.update(statement, new User(4, "Jacking", 37));
session.commit();
session.close();
System.out.println(result);
}
@Test
public void insertTest() throws IOException {
SqlSession session = MyBatisUtil.getSessionFactory().openSession();
String statement = "com.cbgd.userMapper.insertUser";
int result = session.insert(statement, new User(-1, "jjb", 36));
session.commit();
session.close();
System.out.println(result);
}
MyBatisUtil.java
public class MyBatisUtil {
public static SqlSessionFactory getSessionFactory() throws IOException {
String resource = "conf.xml";
//加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
return sessionFactory;
}
}
几个可以优化的地方
连接数据库的配置单独放在一个properties文件中
## db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root
conf.xml
<properties resource="db.properties"/>
<!--
development : 开发模式
work : 工作模式
-->
<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="${name}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
为实体类定义别名,简化sql映射xml文件中的引用
<typeAliases>
<!-- <typeAlias type="com.xxx.User" alias="_User"/> -->
<package name="com.xxx.bean"/>
</typeAliases>
在src下加入log4j的配置文件,打印日志信息
1. 添加jar:
log4j-1.2.16.jar
log4j-1.2.16.jar
2.1. 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
2.2. log4j.xml(方式二)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="debug" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>